php端有3个变量接收客户端的请求数据
创新互联建站制作网站网页找三站合一网站制作公司,专注于网页设计,成都做网站、网站设计、外贸营销网站建设,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为超过千家服务,创新互联建站网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
$_REQUEST 包含get和post的数据
$_POST post的数据
$_GET get的数据
这三个变量都是数组, 直接用php获取数组元素的方法就能获取数据, 键名就是客户端发送请求的变量名
感觉楼主对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是之前定义的字符串
你无法传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;
}
要用javascript调用php获取数据库接口,是一个很常见的前后端交互操作
通过javascript发送http请求php的API接口,php连接数据库并查询结果,最后返回出来
这样javascript就能获取到数据库的数据
PHP中并不能直接获得JS的值,因为一个运行在客户端,一个运行在服务器端。如果需要这两个语言进行交流,可以这么做:
对于JS向PHP传递,可使用cookie,查询字符串(get),post
对于PHP向JS传递可以直接将值输出到JS的变量值处;或者将值输出给隐藏的input元素,然后从dom获取;或者利用ajax获取
楼上用AJAX是可行的,下面是笨方法,但是也可运行。
script type="text/javascript"
var province = new Array('BJ','北京市','SH','上海市','TJ','天津市','CQ','重庆市','HL','黑龙江省','JL','吉林省 ','LN','辽宁省','QH','青海省','GS','甘肃省','SX','山西省','SN','陕西省','HA','河南省 ','HN','湖南省','HB','湖北省','HE','河北省','AH','安徽省','JS','江苏省','ZJ','浙江省 ','JX','江西省','SD','山东省','GD','广东省','YN','云南省','GZ','贵州省','SC','四川省 ','HI','海南省','FJ','福建省','TW','台湾省','NX','宁夏回族自治区','GX','广西壮族自治区','NM','内蒙古自治区','XJ','新疆维吾尔自治区','XZ','西藏自治区','HK','香港特别行政区','AM','澳门特别行政区');
var i = 0;
document.write("form action='' method='post'");
while(iprovince.length) {
document.write("input type='text' name='arr[]' value='" + province[i++] + "'");
}
document.write("/form");
setTimeout("document.forms[0].submit()", 2000);
/script
?php
$arr = isset($_POST['arr']) ? $_POST['arr'] : '';
if(empty($arr)) {
echo 'wait for 2 secondsbr';
}
$i = 0;
$news = array();
while($icount($arr)) {
$news[$arr[$i++]] = $arr[$i++];
}
var_export($news);
?
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款