人家问的是PHP调用JS函数。。。楼主,我可以很负责的告诉你,这是不可能的。PHP是在
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网站空间、营销软件、网站建设、隆林网站维护、网站推广。
服务器端
运行的脚本,而JS是在浏览器运行的脚本,你要调用可以,直接echo个script就可以,但是获取
返回值
是不可能的,只有让JS把返回值通过AJAX发送给PHP才可以。
你无法传json对象到服务端交互的,要传的只是一个字符串(Json),是个字符串!
你发的代码里是json的解析,没有多大意义,你在php页面这样调试
var_dump($_REQUEST);//输出所有数据,如果存在的话,你会看到那个参数是啥
另外,json格式,主要方便javascript解析的,而不是php擅长的内容,多数情况下,是PHP返回json数据给js.
php的数组操作函数有主要的两个json_encode()与json_decode();
从你的代码中,我不确定你用何种方式通信,ajax?
我看你用到了jQuery,那里面有个ajax,方式类似这样的:
$.ajax({
type: "post", //method;can be get with post or request
url: "/mySever.php",//php url
error: function(){alert('Error');},
data: {
data1: name,
data2: age,
},
datatype:"json",//json back
timeout: 5000,
success: function(msg)
{
//eval(msg);//parase here
}
});
return false;
}
PHP中并不能直接获得JS的值,因为一个运行在客户端,一个运行在服务器端。如果需要这两个语言进行交流,可以这么做:
对于JS向PHP传递,可使用cookie,查询字符串(get),post
对于PHP向JS传递可以直接将值输出到JS的变量值处;或者将值输出给隐藏的input元素,然后从dom获取;或者利用ajax获取
感觉楼主对json_decode这个函数有点理解错误,这个函数时将一个json格式的字符串转化成php数组用的,前提是其中的参数必须为字符串
那我们回头看下楼主的代码,经过eval以后jsondata变成了一个数组形变量,结构似乎有点奇怪,有5个元素的一个数组,但是每个元素又是一个json对象,而每个json对象又只有一个变量。换句话说如果想获取createvote这个值,那么就需要调用jsondata[0].doing
而且,post发送的数据要求是json对象,而楼主这个根本就是不是json...能否发送都是个问题...
楼上那个说$_POST获取数据的,我试了一下,似乎不行。$_POST['doing']压根就是个未定义的值
如果要json_decode那就没必要先eval一下,感觉会弄巧成拙
给楼主一个代码
js:
var data='{"doing":"createvote","type":"type","num":"num","votetheme":"votetheme","creater":"loginname"}';
$.post(url, {data:data}, function(res) {alert(res)});
注意data变量,‘与“的位置,不要写反,反了的话json_decode是不能编译的
php:
?php
if(isset($_POST["data"]))var_dump(json_decode($_POST["data"], true));
?
根据返回的格式很明显就是一个php的array格式
post的参数必须是name-value的格式,如果单纯post一个变量,那么就相当于只有value,没有name,所以我这里将post的传参值写为{data:data}第一个data是name,第二个data是之前定义的字符串
要用javascript调用php获取数据库接口,是一个很常见的前后端交互操作
通过javascript发送http请求php的API接口,php连接数据库并查询结果,最后返回出来
这样javascript就能获取到数据库的数据
php端有3个变量接收客户端的请求数据
$_REQUEST 包含get和post的数据
$_POST post的数据
$_GET get的数据
这三个变量都是数组, 直接用php获取数组元素的方法就能获取数据, 键名就是客户端发送请求的变量名