我有一些代码:
function duplicatecheck(value, colname) {
var invoiceLineId = $('tr[editable="1"]').attr('id');
var invoiceLine = {
InvoiceLineId: invoiceLineId,
InvoiceId: invoiceId,
ActivityId: value
};
$.post('/Invoice/InvoiceLineExistsForThisActivity/', invoiceLine, function (data) {
if(data == true) {
return[ false, "An invoice line already exists with this activity"]
}
else {
return[ true, ""];
}
});
}
问题是duplicatecheck
应该返回一个值。该值在post
回调函数内。所以duplicatecheck
运行并且不返回任何内容,因为post
是异步的,duplicatecheck
在回调甚至运行之前完成。
有没有办法让duplicatecheck
等到回调结束并返回回调返回的内容。
我是否完全以错误的方式解决这个问题,应该做些什么呢?
答案 0 :(得分:1)
如果您使用jQuery.ajax,则可以将异步设置为false。话虽如此,优选地,您的Web应用程序的结构应该是可以实现异步的。
你应该调查回调。如果你运行一个你知道可能需要一段时间的函数,那就为它提供一个它完成后会调用的函数。有用的链接:
Understanding callback functions in Javascript
Getting a better understanding of callback functions in JavaScript
答案 1 :(得分:1)