php接口datatype= text,关于php:dataType:“json”不起作用
我正在嘗試使用數組中的json將多個變量從php文件發送回ajax。 php文件中的代碼完美運行,并且應該像我的數據庫一樣完成所有操作。 但是當我在ajax中添加dataType:"json"時,php文件中就沒有任何事情發生了。 我google了一下,有些人提到它可能是一個瀏覽器問題,但到目前為止它無法在firefox,chrome或IE中使用。 我正在使用最新版本的jQuery。
這是在php內部發生的事情:
//Create variables and update database
echo json_encode(array("id" =>"$realid","un" =>"$username","date" =>"$date"));
?>
這是ajax代碼:
.ajax(
{
url: 'UpdateComments.php',
type: 'POST',
dataType:"json",
data:
{
type:"add",
comment: $("#comment").val(),
id: videoID
},
success: function (data)
{
//Get the data variables from json and display them on page
}
});
我對此毫無頭緒,任何建議都將不勝感激!
檢查firebug / net面板中的ajax響應,看看你的服務器是什么。
contentType HTTP標頭可能會有所幫助
我懷疑返回的內容不是嚴格的JSON - 檢查PHP之前或之后的空格,或文件中不應該存在的任何其他內容(提示:在json_encode之后使用'die')。 如果未在JQuery中指定dataType,則成功=獲取響應。 當你這樣做時,成功=獲得一個有效的響應....同時檢查你的PHP版本,我似乎記得json_encode在早期版本中被竊聽過。
常見問題是瀏覽器在JSON之前打印"別的東西",無論是可讀的還是不可讀的(不可見的)char。嘗試做這樣的事情:
//at the very beginning start output buffereing
ob_start();
// do your logic here
// right before outputting the JSON, clear the buffer.
ob_end_clean();
// now print
echo json_encode(array("id" => $realid,"un" => $username,"date" => $date));
?>
現在,所有補充數據(在JSON之前)將被丟棄,你應該讓它工作......
謝謝,這就行了!
我相信如果您使用dataType,您應該使用contentType,"JSON的官方Internet媒體類型是application / json"。
.ajax(
{
url: 'UpdateComments.php',
type: 'POST',
contentType:"application/json",//note the contentType defintion
dataType:"json",
data:
{
type:"add",
comment: $("#comment").val(),
id: videoID
},
success: function (data)
{
//Get the data variables from json and display them on page
}
});
嘗試將錯誤處理程序定義為$ .ajax調用的一部分
$.ajax({
...,
error: function(xml, error) {
console.log(error);
}
});
然后檢查調試控制臺是否有任何可以幫助您診斷問題的錯誤。
我不會使用dataType,如果它導致你的問題,我個人也沒有使用過對象作為數據值之前可能與它有關系嗎?
無論如何,我已經調整了主要的ajax例程,我希望這會有所幫助。
$.ajax(
{
url: 'UpdateComments.php',
type: 'POST',
data:
{
type:"add",
comment: $("#comment").val(),
id: videoID
},
success: function (response)
{
//Get the data variables from json and display them on page
var data = $.parseJSON(response);
alert(data.id);
}
});
如果在jQuery中設置dataType,則實際設置Content-Type頭屬性。也許,在您的PHP腳本中,您需要將此MIME類型聲明為已接受。您是否注意到代碼在您發出請求時是否進入了PHP腳本?如果它在Firefox,Chrome或IE中不起作用,我懷疑這是一個瀏覽器問題。
要獲得更好的AJAX請求透視圖,請訂閱ajaxBeforeSend(不確定事件名稱是否正確檢查jQ docs)事件并記錄xhr對象。
總結
以上是生活随笔為你收集整理的php接口datatype= text,关于php:dataType:“json”不起作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 呼和浩特遇极端大风 大树连根拔起:实拍视
- 下一篇: 西南“大动脉”打通!郑渝高铁6月20日全