最有可能的問題是在這一行:dataType: 'json',
因爲它期待JSON響應,並且您正在發送html或文本文本響應。讓我們來看看定義第一:
JSON.stringify變成一個JavaScript對象轉換爲JSON文本並存儲JSON文本字符串。
contentType是發送到服務器的標題,指定特定的格式。
dataType你告訴jQuery期望什麼樣的響應。
例子:
如果要發佈這樣的:{"name":"John Doe"}
並期待回:{"success":true}
那麼你應該有:
var data = {"name":"John Doe"};
dataType : "json",
contentType: "application/json; charset=utf-8",
data : JSON.stringify(data),
瞭解更多詳情:Check jQuery Docs
解決方案1:(測試)
- 只是刪除
dataType: 'json',
線和讓jQuery的決定數據類型。(的確有不錯的工作在確定),或者確保在使用兩側正確的數據類型(客戶端和服務器)
解決方案2:(測試)
的jQuery:
var name = $('#name').val();
var email = $('#email').val();
var password = $('#password').val();
$.ajax({
type: 'POST',
url: 'ajax.php',
dataType : "html", //assuming you need html response like '<div>Success</div>'
//Common types: html, xml, json & text
cache: false,
data: { json : encodeURIComponent(JSON.stringify({
name:name,
email:email,
password:password
}))},
success: function(){
alert('request successful');
},
error: function(){
alert('error occured');
}
});
PHP:
$json_data = json_decode(urldecode($_POST['json']));
//now $json_data variable has decoded JSON data
echo $json_data->name;
解決方案3:(未測試)
發送JSON對象通過設置contentType
:像
contentType: "application/json; charset=utf-8",
然後讀取使用php://input
(注意原始輸入:$〇一二三六八六〇三八二〇九〇五〇八四一二三二一〇不會在這裏工作)
以下是操作方法:
在PHP文件
- 集內容類型獲取數據
$input = file_get_contents('php://input');
- 解碼數據
$decoded_input = urldecode($input);
- 最後,作爲JSON對象
$data = json_decode($input);
如果請求的工作可能出現這種情況,但deserialisation解碼失敗。如果你真的使用控制檯調試了這個,並且傳遞給'error'處理函數的參數,你可以得到錯誤信息來診斷。 –
你能顯示你正在收到的回覆嗎?似乎你沒有以json格式設置響應。您不需要在Ajax調用數據中使用'JSON.stringify' –
@PankajMakwana *「您不需要在Ajax調用數據中使用'JSON.stringify'」* < - 如果他們想要發佈json字段的JSON字符串值。 – Phil