5

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

3 回答 3

10

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

jquery 建议这样做的方式是这样的:

var jqxhr = $.post( "example.php", function() {
   alert( "success" );
})
.done(function() {
    alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
    alert( "finished" );
 });
于 2013-10-11T16:13:02.410 回答
0

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

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

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

于 2013-10-11T16:16:56.310 回答
0

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

于 2018-06-06T13:08:21.160 回答