$. get()没有返回值

$.GET() didn't return value

本文关键字:返回值 get      更新时间:2023-09-26

我有这样的脚本。

function getContactLastDateOfDeparture(contactId) {
    $.get(
        '/transaction/ajaxGetContactLastDateOfDeparture/'+contactId, 
        '', 
        function(data){
            alert(data);
            return data;
        }, 
        'json'
    );
}

我用console.log(getContactLastDateOfDeparture(2144))测试上面的脚本,当在警报阶段它输出字符串2011-12-06,但当return阶段它输出undefined

如何使返回应该是2011-12-06 ?

您不能在AJAX函数中真正执行返回,因为它是异步的。如果希望传递该值,最好在最后调用另一个函数。

要做到这一点,你可以像这样传递它:

function getCall(param, callback) {
    $.get('url', function (data) { alert(data); callback(data); }, 'json');
}

如果您确实希望函数从ajax调用返回值,则可以使用$。Ajax代替$。得到(本质上是$。Get基于$。Ajax与一些简化的参数);美元。Ajax有一个参数"async",您可以将其设置为false以使Ajax调用同步。

重要-不建议使用ajax的同步调用,因为它会冻结js的执行,并可能导致意想不到的问题。

http://fixingthesejquery.com/images/ajax101.png

您应该阅读有关Ajax、异步行为和事件驱动编程的内容。这是行不通的

Gus,

第一个参数是一个url,指向一个有效的处理页面(html、asp、php等)。

编辑(被否决后):

一个有效的url,在你的例子中,应该是:

$.get('url', function (data) {
    alert(data);
});

你的url '/transaction/ajaxGetContactLastDateOfDeparture/'+contactId将不是"计算"

然而,

'/transaction/ajaxGetContactLastDateOfDeparture/getContactID.php?contactID='+contactId

会!

您的处理文件(.asp, .php等)将返回您的值期待的。