2013-10-11 2 views
3

У меня есть $ .post, который с помощью Fiddler я могу видеть всегда сообщения успешно, но моя функция успеха никогда не запускается.

Успешное сообщение к URL-адресу возвращает 1 или неудача возвращает 0, каждый раз, когда я тестировал, он возвращает ожидаемое значение 1, чтобы я был потерян в отношении того, что я делаю неправильно?

if ($('#mycheckbox').prop('checked')) { 
    $.post('/base/MailingList/Subscribe/', 
     { 
      listId: $('#mycheckbox').val(), 
      name: $('#subscriber-name').val(), 
      email: $("#subscriber-email").val() 
     }, 
     function(response) { 
      console.log(response); 
     }); 
} 
+0

Что скажет вам консоль браузера? –

+0

Если ответ в скрипаче показывает состояние 200, он должен работать. Если вы не в IE7, в котором вызов console.log нарушит функцию успеха. –

+0

Консоль показывает мне ожидаемый ответ «200 OK», который является источником моей путаницы и причины для моего сообщения. Я использую Chrome и FireFox для тестирования на данный момент. – ProNotion

ответ

6

Включите еще одну функцию в качестве окончательного обратного вызова. Эта функция будет работать в случае сбоя.

Путь JQuery рекомендует делать это следующим образом:

var jqxhr = $.post("example.php", function() { 
    alert("success"); 
}) 
.done(function() { 
    alert("second success"); 
}) 
.fail(function() { 
    alert("error"); 
}) 
.always(function() { 
    alert("finished"); 
}); 
+0

Интересно, что этот пример работает для меня. Я включу это обратно в свое приложение, и если все будет работать, как ожидается, я буду отмечать как ответ. благодаря – ProNotion

0

Я не уверен, если это поможет или нет, но я всегда использую полностью квалифицированные URLs, когда я делаю какие-либо асинхронные вызовы. Вы можете попробовать:

$.post('http://mydomain.com/base/MailingList/Suscribe/', ... 

Кроме того, вы, вероятно, хотите, чтобы ваша функция обработки, чтобы получать все три аргумента от обратного вызова (данные, textStatus, jqXHR). Таким образом, вы можете посмотреть txtStatus, чтобы убедиться, что у вас есть успех или нет.

Смежные вопросы