jQuery $ .post成功函数永远不会触发

时间:2013-10-11 16:09:38

标签: javascript ajax jquery

我有一个$ .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);
        });
}

3 个答案:

答案 0 :(得分:7)

将另一个功能作为最终回调。该功能将在失败的情况下运行。

jquery建议这样做:

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

答案 1 :(得分:0)

我不确定这是否有帮助,但是当我进行任何异步调用时,我总是使用完全限定的URL。您可以尝试:

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

此外,您可能希望您的处理函数从回调中接收所有三个参数(data,textStatus,jqXHR)。这样,您可以查看txtStatus以验证您是否成功。

答案 2 :(得分:0)

在我的情况下,问题是在服务器上的php文件中有错误的MIME类型(" application / json"而不是" text")的标题。如果您发送的标题与数据类型不匹配会导致错误并且$ .post调用失败函数。