2011-09-23 52 views
0

如果我在下面的代碼中將類型設置爲'GET',它可以工作,但是我不能讓它與'POST'一起工作。不能讓jQuery ajax POST開始工作

ajaxPostTest.html ...

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.js"></script> 
<script type="text/javascript"> 

$(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") ; 
      } 
     }); 
}); 

</script> 
</head> 
<body> 
<div id="returned">returned: </div> 
</body> 
</html> 

ajaxPostTest_server.php ...

<?php 
    echo json_encode($_REQUEST); 
?> 

瀏覽器的預期輸出是...

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"} 

即我找不到我發送到服務器的數據在哪裏。

+0

你可以使用螢火蟲,併發布錯誤,或從控制檯響應? – AJC

+0

爲什麼你將請求的內容類型設置爲「application/json」?將其設置爲「application/x-www-form-urlencoded」(默認值),然後重試。 – Niko

+0

@AJC。添加了對我的問題的回覆。 – spiderplant0

回答

1

由於您的發送數據爲 「應用/ JSON」,PHP不填充$ _ POST/$ _REQUEST。您需要以「application/x-www-form-urlencoded」的形式發送請求(您可以省略「Content-Type」參數,因爲這是默認類型)。

+0

工作。我添加了與ASP.NET而不是PHP通信時似乎使用的Content-Type cos。另外GET似乎並不介意添加json內容類型。無論如何,現在我知道規則是什麼,我可以得到它的工作。感謝您的解決方案和時間。 – spiderplant0

0

使用$ _POST而不是$ _REQUEST

+0

謝謝。試過 - 沒有效果。 – spiderplant0