无法获得jQuery ajax POST工作

如果我在下面的代码中将类型设置为’GET’,它可以工作,但是我无法使用’POST’。

ajaxPostTest.html …

    $(document).ready(function(){ $.ajax({ url: "ajaxPostTest_server.php", data: {"fruit1": "rasp", "fruit2": "bramble"}, type: 'POST', dataType: 'json', contentType: "application/json; charset=utf-8", success: function(data){ $("#returned").append(data.fruit1); }, error: function(jqXHR, textStatus, errorThrown){ alert("error") ; } }); });    
returned:

ajaxPostTest_server.php …

  

浏览器的预期输出是……

 returned: rasp 

我实际上是在尝试与ASP.NET Web服务器进行交互,我想首先确认我的ajax正在工作(并且我正确地理解了ajax) – 因此这个简化的代码。

Firebug调试……

 Response Headersview source Date Fri, 23 Sep 2011 14:57:37 GMT Server Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By PHP/5.3.1 Keep-Alive timeout=5, max=99 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/html Request Headersview source Host localhost User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 Accept application/json, text/javascript, */*; q=0.01 Accept-Language en-gb,en;q=0.5 Accept-Encoding gzip,deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 115 Connection keep-alive Content-Type application/json; charset=utf-8 X-Requested-With XMLHttpRequest Referer http://localhost/My_Webs/temp/ajaxPostText1.html Content-Length 26 Cookie PHPSESSID=mgvoacnluh3kad5pakafrd5kd1 

我在“回复”标签中的所有内容都是……

 {"PHPSESSID":"mgvoacnluh3kad5pakafrd5kd1"} 

即我无法找到发送到服务器的数据的位置。

因为您将数据作为“application / json”发送,所以PHP不会填充$ _POST / $ _REQUEST。 您需要将请求发送为“application / x-www-form-urlencoded”(您可以省略“Content-Type”参数,因为这是默认类型)。

使用$ _POST而不是$ _REQUEST