jQuery中ajax发送服务器的data问题

    前天在使用jQuery作练习时发现的,$.ajax(properties)其中传递参数data的问题.根据文档说是:(Object|String) data - 要发送到服务器的数据。如果还不是一个字符串,就自动轮换为一个查询字符串。即附加到GET请求的url后面的字符串.但是我给data赋值一个json对象数据,然而,它不能转换成"查询字符串".

类似源码:

 
  1. # 客户端js部分  
  2.   
  3. var json_data = {"name""bob""age"14};  
  4.   
  5. $.ajax({  
  6.     type: "post",  
  7.     url : "test.php",  
  8.    dataType: "json",  
  9.    data:  json_data,  
  10.    success: function(data){  
  11.         alert(data);  
  12.    }  
  13.   
  14. });  
  15.   
  16. #服务器端  
  17.   
  18. <?php  
  19. #调试过程  
  20. print_R( $_POST );  
  21. ?>  

    在调试过程中发现,服务器端获取$_POST就是一个空数组,由此说明json_data在post时并没有转换成字符串.当然,如果在此使用$.post(url, params, callback)其中,params指定为json_data,则完全正常.

    于是,我查看了下jquery.js中$.ajax()和$.post()的定义,发现$.post()过程,对params进行jQuery.param(data)加工(json转换成字符串的过程).所以,问题由此解决了,如果想在$.ajax中的data使用json对象,只要先jQuery.param(data)下,就万事OK了!^_^


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值