2013-05-29 2 views
0

я следующий код:JQuery Ajax .post) вопрос (

$(document).ready(function() { 

    console.log("Document ready..."); 

    $.post("...file.asmx/HelloWorld", function(data) { 

      console.log("Post Successful");    
    });    
}); 

я получаю следующий вывод на консоль:

[10:01:44.528] Document ready... 
[10:01:44.601] POST ..file.asmx/HelloWorld [HTTP/1.1 200 OK 103ms] 

Мой вопрос, почему это второй журнал вызовов не выполняется? Кажется, что сообщение прошло успешно, и функция должна выполняться. Я использую firefox.

также:

$(document).ajaxError(function(event, jqxhr, settings, exception) { 
     console.log("Triggered ajaxError handler."); 
     console.log(exception); 
}); 

Когда я пытаюсь войти исключение, я получаю пустую строку в моей консоли.

+0

В зависимости от того, какой тип данных возвращается из сервиса, вы можете пройти 4-й параметр '$ .post()', который говорит, какой формат ответа (JSON, HTML, текст и т. д.). Если вы этого не сделаете, jQuery угадывает, как анализировать ответ на основе заголовка 'Content-Type'. Кроме того, я думаю, что в последних версиях jQuery пустой ответ считается недействительным JSON, тогда как он используется, чтобы быть в порядке – Ian

ответ

2

A 200 OK Ответ не гарантирует успешный вызов AJAX.

Правила совместного использования ресурсов для перекрестных ссылок могут запрещать доступ к ресурсу, или возвращенный контент может быть невозможен.

Добавьте обратный вызов ошибки и посмотрите, не вызваны ли это, и если да, с какими аргументами.

Поскольку $.post напрямую не поддерживает обратный вызов ошибки, вы можете использовать «отложенный» Синтаксис:

$.post(...).fail(function(jqXHR, textStatus, errorThrown) { 
    // log here 
}); 
+0

«HTTP/1.1 200 OK» – Ven

+1

@ user1737909 только потому, что статус HTTP в порядке, он не гарантирует, что загрузка был правильно проанализирован. Или это может привести к ошибкам безопасности CORS. – Alnitak

+0

Когда я пытаюсь выполнить log errorThrown, ничего не появляется, но функция вызывается. –