使用ajax将JSON发送到PHP
我想以json格式将一些数据发送到php并在php中进行一些操作。 我的问题是我无法通过ajax将json数据发送到我的php文件。请帮助我,我该怎么做。 我试过这种方式..
$(function (){ $("#add-cart").click(function(){ var bid=$('#bid').val(); var myqty=new Array() var myprice=new Array() qty1=$('#qty10').val(); qty2=$('#qty11').val(); qty3=$('#qty12').val(); price1=$('#price1').val(); price2=$('#price2').val(); price3=$('#price3').val(); var postData = { "bid":bid, "location1":"1","quantity1":qty1,"price1":price1, "location2":"2","quantity2":qty2,"price2":price2, "location3":"3","quantity3":qty3,"price3":price3 } var dataString = JSON.stringify(postData); $.ajax({ type: "POST", dataType: "json", url: "add_cart.php", data: {myData:dataString}, contentType: "application/json; charset=utf-8", success: function(data){ alert('Items added'); }, error: function(e){ console.log(e.message); } }); }); });
在PHP中我使用:
if(isset($_POST['myData'])){ $obj = json_decode($_POST['myData']); //some php operation }
当在php文件中添加print_r($ _ POST)时,它在firebug中显示array(0){}。
丢失contentType: "application/json; charset=utf-8",
您没有向服务器发送JSON,而是发送正常的POST查询(恰好包含JSON字符串)。
这应该成为你的工作。
JSON.stringify
是,你根本不需要在这里使用JSON.stringify
或json_decode
。 做就是了:
data: {myData:postData},
然后在PHP中:
$obj = $_POST['myData'];
这是因为$_POST
预先填充了表单数据。
要获取JSON数据(或任何原始输入),请使用php://input
。
$json = json_decode(file_get_contents("php://input"));
使用json和ajax将javascript obj发送到php:
JS:
var dataPost = { "var": "foo" }; var dataString = JSON.stringify(dataPost); $.ajax({ url: 'server.php', data: {myData: dataString}, type: 'POST', success: function(response) { alert(response); } });
在php中使用该对象:
$obj = json_decode($_POST["myData"]); echo $obj->var;
我相信你可以尝试这样的事情:
var postData = { "bid":bid, "location1":"1","quantity1":qty1,"price1":price1, "location2":"2","quantity2":qty2,"price2":price2, "location3":"3","quantity3":qty3,"price3":price3 } $.ajax({ type: "POST", dataType: "json", url: "add_cart.php", data: postData, success: function(data){ alert('Items added'); }, error: function(e){ console.log(e.message); } });
json编码应该自动发生,你的post的转储应该给你这样的东西:
array( "bid"=>bid, "location1"=>"1", "quantity1"=>qty1, "price1"=>price1, "location2"=>"2", "quantity2"=>qty2, "price2"=>price2, "location3"=>"3", "quantity3"=>qty3, "price3"=>price3 )
只需删除:
... //dataType: "json", url: "index.php", data: {myData:postData}, //contentType: "application/json; charset=utf-8", ...
您正在尝试使用js对象格式发送js数组。
而不是使用
var a = new array(); a['something']=...
尝试:
var a = new Object(); a.something = ...
我知道已经有一段时间了,但万一有人还需要它:
我需要传递的JSON对象:
0:{CommunityId: 509, ListingKey: "20281", Type: 10, Name: "", District: "", Description: "",…} 1:{CommunityId: 510, ListingKey: "20281", Type: 10, Name: "", District: "", Description: "",…}
Ajax代码:
data: JSON.stringify(The-data-shows-above), type: 'POST', datatype: 'JSON', contentType: "application/json; charset=utf-8"
和PHP方面:
json_decode(file_get_contents("php://input"));
它适合我,希望它可以帮助!
- 如何使用Javascript处理err_blocked_by_client?
- 如何停止DataTables实例已启动的所有当前正在进行的Ajax查询?
- WMD编辑器回显wmd-preview div的值以及有关将该值存储到数据库中的查询
- CakePHP和jQuery – 不引人注目的动作
- ASP.NET MVC 3的jquery ajax表单
- 使用jquery ajax调用jsf托管bean方法(AjaxBehaviorEvent监听器处理程序)
- 在api上jquery ajax请求时出现CORS错误
- AJAX不断寻找服务器更新? 使用Javascript
- 演示:jQuery Ajax使用JSON Return调用PHP脚本