jQuery发布了另一个javascript函数

时间:2011-09-26 01:37:31

标签: javascript jquery

我有一些代码:

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等到回调结束并返回回调返回的内容。

我是否完全以错误的方式解决这个问题,应该做些什么呢?

2 个答案:

答案 0 :(得分:1)

如果您使用jQuery.ajax,则可以将异步设置为false。话虽如此,优选地,您的Web应用程序的结构应该是可以实现异步的。

你应该调查回调。如果你运行一个你知道可能需要一段时间的函数,那就为它提供一个它完成后会调用的函数。有用的链接:

Understanding callback functions in Javascript
Getting a better understanding of callback functions in JavaScript

答案 1 :(得分:1)

  1. 我认为你走错路,JS是事件驱动的,主要是
  2. $ .POST有一个sync / async标志,请检查here