【发布时间】:2015-12-12 01:13:07
【问题描述】:
首先我要道歉 - 我是一名 .NET 编码员,几乎没有(没有)前端经验。
当用户点击提交时,表单需要调用一个 REST 服务,如果服务返回 true,那么用户会收到一个警告,指出存在重复,并询问他们是否要继续。感谢任何帮助。
我将提交按钮 ONCLICK 连接到 Approve()
当 checkForDuplicateInvoice() 被调用时,它会在 ajax 调用有机会获得结果之前立即将控制权传递回调用函数。效果是 Validate() 函数完成时不考虑是否存在重复发票。
我需要帮助修改表单,以便当用户单击提交按钮时,表单在最终提交之前验证(包括对 db 的 ajax 调用)。
我根据 Jasen 的反馈修改了代码。
我在标题中包含https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js。
我现在得到的错误是“对象不支持属性或方法'按钮'”
我现在提交/验证的表单是:
$(document).ready(function () {
$("#process").button().click( function () {
if (ValidateFields()) { // internal validation
var companyCode = document.getElementById("_1_1_21_1").value;
var invoiceNo = document.getElementById("_1_1_25_1").value;
var vendorNo = document.getElementById("_1_1_24_1").value;
if (vendorNo == "undefined" || invoiceNo == "undefined" || companyCode == "undefined") {
return false;
}
$.ajax({ // external validation
type: "GET",
contentType: "application/json;charset=utf-8",
//context: $form,
async: false,
dataType: "jsonp",
crossDomain: true,
cache: true,
url: "http://cdmstage.domain.com/services/rest/restservice.svc/CheckDuplicateInvoice?InvoiceNumber=" + invoiceNo + "&VendorNumber=" + vendorNo + "&CompanyCode=" + companyCode,
success: function (data) {
var result = data;
var exists = result.CheckForInvoiceDuplicateResult.InvoiceExists;
var valid = false;
if (exists) {
if (confirm('Duplicate Invoice Found! Click OK to override or Cancel to return to the form.')) {
valid = true;
}
}
else {
valid = true; // no duplicate found - form is valid
}
if (valid) {
document.getElementById("_1_1_20_1").value = "Approve";
doFormSubmit(document.myForm);
}
},
error: function (xhr) {
alert(xhr.responseText);
}
});
}
});
});
【问题讨论】:
-
但是你的问题是什么?
-
您在这里期待什么?我不明白你的问题..
-
当 Approve() 调用调用 CheckForInvoice() 的 Validate() 时,CheckForInvoice() 函数会在 ajax 调用返回之前返回控制权,因此 Validate 永远不会从 ajax 调用中获得响应。我不知道如何验证表单并让验证等待结果。
-
修改了原始帖子以包含一个问题,对不起!
-
您提出两个请求是否有特定原因:
AddInvoice+ 提交?
标签: javascript jquery ajax validation rest