Я практикую jquery обещания и что-то странное происходит в моем демо-коде. Что мой код делает, когда я нажимаю кнопку, тогда он получает простые данные json с сервера. Я использую два обещания jquery: done()
, а второй - fail()
. Когда я нажимаю кнопку, он получает данные с сервера, но done()
не выполняет данные, отображается в консоли через fail()
. Почему и как я могу это решить? Ниже мой кодвопрос с jquery promises
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. Вы получаете необработанный PHP-код в 'responseText'. – Dogbert