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了!^_^
 

你可能感兴趣的:(jquery,Ajax,json,properties,服务器,callback)