$ .GET()没有返回值

时间:2011-11-21 04:25:29

标签: javascript jquery

我有这样的剧本。

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

4 个答案:

答案 0 :(得分:3)

你无法真正在AJAX函数中返回,因为它是异步的。如果要传递值,最好在最后调用另一个函数。

为此,您可以像这样传递:

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

答案 1 :(得分:1)

如果你真的希望你的函数从ajax调用返回值,你可以使用$.ajax而不是$ .get(基本上$ .get基于$ .ajax和一些简化的params); $ .ajax有一个参数“async”,您可以将其设置为false以使ajax调用同步。

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

答案 2 :(得分:0)

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

您应该阅读有关Ajax,异步行为和事件驱动编程的内容。它只是不起作用。

答案 3 :(得分:-3)

格斯,

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

编辑(被投票后):

在您的情况下,有效的网址是:

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

你的网址' / transaction / ajaxGetContactLastDateOfDeparture /' + contactId会 不是"计算"

然而,

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

会!

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