[英]ajax always going to error
我正在嘗試學習使用Ajax,但不幸的是我無法success
。
$('.engineering-services').live('click', function() {
$.ajax({
url: 'index.php?route=information/information/homepage_info',
type: 'post',
data: {info_description : 'test'},
dataType: 'json',
success: function(json){
alert('pass');
},
error: function(json) {
alert('fail');
}
});
});
這是php函數...
public function homepage_info() {
$json = array();
if (isset($this->request->post['info_description'])) {
echo $this->request->post['info_description'];
echo '<br /> test2';
}
$this->response->setOutput(json_encode($json));
}
但是,這總是發出失敗警報,而不是通過警報。 我在這里錯過明顯的東西嗎?
編輯:找到功能正常,因為它在控制台中給出了正確的響應,
即
測試
測試2
謝謝
如果您的dataType設置為json,則返回的任何非JSON內容都將導致ajax調用出錯。 嘗試將一些json發送回腳本... {“ test”:“ abc”}或類似名稱。 例如,我看到了幾個調用以在您的代碼中echo
。
不僅如此,打印到瀏覽器的任何PHP錯誤/警告/通知都將中斷呼叫。
提示:您可以使用json_encode()
從PHP變量生成有效的JSON。
您不能將現有查詢字符串與數據結合使用。 這樣的事情應該起作用(或至少在語法上有效):
$.ajax({
url: 'index.php',
type: 'post',
data: {information:'information/information/homepage_info',info_description:'test'},
dataType: 'json',
success:function(json){
alert('pass');
},
error:function(json) {
alert('fail');
}
});
同樣如前所述,任何不是json的內容都可能會導致錯誤,因此您不會echo
這些html組件...如果有,請print
它們。
另外,請注意,您的dataType應該在服務器端使用header('Content-type: application/json');
在index.php
而不是在jQuery腳本中聲明。 它保證以這種方式被識別為json,而且Javascript代碼更少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.