2014-11-20 2 views
0

Я пытаюсь прикрепить свой код jquery к стороннему сайту, поэтому я вставляю кнопку, которая запускает запрос при загрузке страницы. Проблема в том, что .done callback не запускается, но всегда запускается. Единственное, что стоит упомянуть, это то, что страница, с которой я пытаюсь работать, также делает некоторый запрос ajax после ее загрузки. Может быть, это причина, по которой у меня проблема?jquery ajax .done не уволен, но всегда запущен.

$("<button>Test</button>").click(function(){ 
    var url="<https url from the site>"; 
    $.ajax(url).done(function(data){ 
    console.log(data); 
    }); 
}).insertBefore("div.top"); 
+0

это означает, что запрос Ajax не удалось по каким-то причинам ... стараюсь иметь неисправностью обработчик и посмотреть, что является причиной отказа –

+0

'$ .ajax (URL) .done (функция (данные) { console.log (данные); }.) не работают (функция (jqXHR, статус, ошибка) { console.log (jqXHR, статус, ошибка) }); ' –

+0

@ArunPJohny вместо того, чтобы вручную вводить все эти аргументы, простой 'console.log (arguments)', могут спасти вас отладочное время! Вероятно, около 5 секунд на каждый аргумент, 5 * 2 = 10 секунд времени. –

ответ

0

Ваша done функция будет выполнена, только если ваш Аякса закончить вызов успешно, если что-то пошло не так done не никогда получить срабатывает. Как следует из названия, метод always будет всегда получить срабатывание независимо от вашего ajax запрос работает или нет.

+0

Спасибо за ответ, но мне интересно, что может быть неправильным? Я проверил статус вызова, и я получил 200 и все данные в responseText. –

+0

@PhilippGrigoryev вы можете опубликовать весь свой код в скрипке? – ianaya89

+1

Я действительно нашел проблему @ ianaya89, см. Мой ответ ниже. спасибо –

2

Я смог решить проблему с помощью Аруна.

При анализе ответа произошла ошибка. Поэтому после того, как я добавил дополнительный запрос {dataType: "json"} в запрос, запускается .done. Она теперь выглядит как

$.ajax(url,{ 
    dataType: "json" 
}).done(function(data){ 
    console.log("Success:" + data); 
}).fail(function(xhr, status, error){ 
    console.log("Status: " + status + " Error: " + error); 
    console.log(xhr); 
}); 
Смежные вопросы