我有一个在表单提交后运行的代码。它是基于 AJAX 请求的。
我遇到的问题是在 Validation.done(function(){
的 FormSubmit
函数中,我收到错误消息说 Uncaught TypeError: Validation.done is not a function。但如果您查看 FormValidate
函数,它会返回 deferredObject.promise
在 ajax 完成或失败中解决或拒绝。
那么问题出在哪里呢??
当用户提交表单时,我们运行操作:
$(document).ready(function() {
$("#NewOrder").submit(function (e){
e.preventDefault();
FormSubmit("NewOrder");
return false;
});
});
function FormSubmit(FormId)
{
var Validation = FormValidate(FormId);
Validation.done(function(){
//Do stuff if validation succeeded
});
}
FormValidate
函数:
function FormValidate(FormId)
{
var deferredObject = $.Deferred();
var url = "../../ajax/FormValidate";
var data = {};
var promise = AjaxRequest(url, data);
promise.done(function(response) {
var resultArray = JSON.parse(response);
var FormEntity = $('#'+FormId).attr('entity');
if($.isEmptyObject(resultArray)){
deferredObject.resolve();
}
else{
$.each(resultArray, function( key, value ) {
$( "div#"+key+"_validation" ).text(value);
});
deferredObject.reject();
}
});
promise.fail(function(response) {
deferredObject.reject();
console.log(response);
});
return deferredObject.promise;
}
AjaxRequest
函数:
function AjaxRequest(url, data)
{
var deferredObject = $.Deferred();
var request = $.ajax({
url: url,
type: "POST",
data: data,
});
request.done(function (response){
deferredObject.resolve(response);
});
request.fail(function (response){
deferredObject.reject(response);
});
return deferredObject.promise();
}
最佳答案
deferredObject.promise
是一个函数。您需要调用它来获取 promise 。
return deferredObject.promise();
关于javascript - ajax 请求完成后 Jquery 延迟对象解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286239/