Heim >Backend-Entwicklung >PHP-Tutorial >Ajax发送json数据,后台用php处理。
前端:
<code> <button id="btn">提交</button> <div id="container"></div> <script type="text/javascript"> var json = { "classid": 1, "zlclass": "测试" }; $("#btn").click(function() { $.ajax({ type: "POST", url:"form.php", contentType:"application/json;charset=utf-8", data: JSON.stringify(json), error: function(request) { alert("Connection error"); }, success: function(data) { $("#container").html(data); } }); }); </script> </code>
后端:
<code><?php header("Content-type:text/html;charset=UTF-8"); $data=json_decode($_POST['data']); echo($data); ?> </code>
结果test.html没有看到返回值,报错。对于php后台接收json数据处于刚入门阶段,求指点
前端:
<code> <button id="btn">提交</button> <div id="container"></div> <script type="text/javascript"> var json = { "classid": 1, "zlclass": "测试" }; $("#btn").click(function() { $.ajax({ type: "POST", url:"form.php", contentType:"application/json;charset=utf-8", data: JSON.stringify(json), error: function(request) { alert("Connection error"); }, success: function(data) { $("#container").html(data); } }); }); </script> </code>
后端:
<code><?php header("Content-type:text/html;charset=UTF-8"); $data=json_decode($_POST['data']); echo($data); ?> </code>
结果test.html没有看到返回值,报错。对于php后台接收json数据处于刚入门阶段,求指点
A) 已你的前端为准,php端需要这样获取
<code>$json = file_get_contents('php://input');</code>
因为是发送的是json数据,所以并不存在$_POST['data']这个东西。
B) 已你的后端为准,前端需要这样发送
<code> $.ajax({ type: "POST", url:"form.php", //contentType:"application/json;charset=utf-8", data: {data: JSON.stringify(json)}, //使用普通的键值方式 error: function(request) { alert("Connection error"); }, success: function(data) { $("#container").html(data); }</code>
前端传的时候直接传json
对象不用JSON.stringify
处理
后端 $_POST['zlclass'];
接收就行
照你现在这样传的话估计得php://input
中去取
<code>var json = { "classid": 1, "zlclass": "测试" }; $("#btn").click(function() { $.ajax({ type: "POST", url:"form.php", dataType:'JSON', data: json, error: function(request) { alert("Connection error"); }, success: function(data) { $("#container").html(data); } }); });</code>
后台直接$data=$_POST['classid'];
<code>data:{ data:JSON.stringify(json) }</code>
var_dump($_POST);看看里面有什么。。
我按照您的意思后台用:
<code>$data = json_decode($_POST['data'],true); echo($_POST['data']); </code>
接收到了数据:
前端代码:
<code> <script> var json = { "classid": 1, "zlclass": "测试" }; $.ajax({ type: "POST", url:"http://localhost/ajax/json/test.php", data: {data: JSON.stringify(json)}, error: function(request) { alert("Connection error"); }, success: function(data) { $("#container").append("<h2>传数据成功"); $("#container").append("<h2>"+"classid:"+data['classid']+",zlclass:"+data['zlclass']+""); } }) </script> </code>
不知道这样能解决您的问题吗?
ajax上传的不是json,data是json转化成的表单数据,直接var_dump($_POST),不要用json处理,json是做返回值用的。