我正在練習jQuery的承諾和一些奇怪的事情發生在我的演示代碼。我的代碼做的是當我點擊按鈕,然後它從服務器接收一個簡單的json數據。我使用兩個jQuery的承諾之一是done()
,第二個是fail()
。當我點擊按鈕它從服務器接收數據,但done()
未執行數據顯示在控制檯通過fail()
。爲什麼以及如何解決這個問題?以下是我的代碼問題與jQuery的承諾
jQuery的
var Obj = function() {
return {
gets: function (successHandler, errorHandler) {
console.log('hello');
return $.ajax({
url: '/server.php',
dataType: 'JSON',
type: 'GET'
});
}
}
};
$('.button').on('click', function() {
var obj = new Obj();
var promise = obj.gets();
promise.done(function (data) {
console.log(data);
});
promise.fail(function (e) {
console.log(JSON.stringify(e)); //this logs below
});
輸出
{"readyState":4,"responseText":"<?php\n$response = array('oranges', 'apples', 'berries');\nexit(json_decode($response));","status":200,"statusText":"OK"}
這裏是我的PHP代碼
$response = array('oranges', 'apples', 'berries');
exit(json_decode($response));
您的服務器似乎不會將'server.php'解析爲PHP文件。你在'responseText'中獲得了原始的PHP代碼。 – Dogbert