我有一个$ .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 :(得分: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调用失败函数。