我正在尝试使用JQuery将表单数据发布到远程servlet。 我可以看到服务器接收数据并返回状态代码200和响应字符串“{result:'success'}” 但是ajax调用不会返回done或fail函数(如果我添加一个always函数,而不是我可以看到它被调用) 这是客户端的代码片段:
`
var dataParams = 'email='+email+'&password='+password;
var url = 'http://127.0.0.1:8888/signup';
var jxhr = $.ajax({
type : "POST",
url : url,
data : dataParams,// serializes the form's elements.
dataType: "json",
done: function() {
console.log("done!");
hideSignUp();
showThankYou(); },
fail: function() {
console.log("fail!");
}
});
`
好像我错过了什么,但似乎无法找到什么。 请注意,我使用的是JQuery 1.8.3,因此不赞成使用。 有什么想法吗?
答案 0 :(得分:4)
尝试:
var url = "http://127.0.0.1:8888/signup";
var jxhr = $.ajax({
type : "POST",
url : url,
data : dataParams,// serializes the form's elements.
dataType: "json"
}).done(function() {
console.log("done!");
hideSignUp();
showThankYou();
}).fail(function(jqXHR, textStatus) {
console.log(textStatus);
});
答案 1 :(得分:0)
尝试链接回调,而不是将它们设置为对象字段:
$.ajax({
type : "POST",
url : url,
data : dataParams,// serializes the form's elements.
dataType: "json"
}).done(function (xhrResponse) {
console.log("done!");
hideSignUp();
showThankYou();
}).fail(function (xhrResponse, textStatus) {
console.log(textStatus);
}).always( function () {
console.log("I'm done with this.");
});
通过链接回调,您可以保证执行至少一个(完整的)。