Javascript $.GET()没有';t返回值

Javascript $.GET()没有';t返回值,javascript,jquery,Javascript,Jquery,我有这样的剧本 function getContactLastDateOfDeparture(contactId) { $.get( '/transaction/ajaxGetContactLastDateOfDeparture/'+contactId, '', function(data){ alert(data); return data; }, 'j

我有这样的剧本

function getContactLastDateOfDeparture(contactId) {
    $.get(
        '/transaction/ajaxGetContactLastDateOfDeparture/'+contactId, 
        '', 
        function(data){
            alert(data);
            return data;
        }, 
        'json'
    );
}
我使用
console.log(getContactLastDateOfDeparture(2144))
测试上面的脚本,当处于警报阶段时,它输出字符串
2011-12-06
,但当阶段
返回时,它输出
未定义的


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

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

要执行此操作,可以按如下方式传递:

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

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

要执行此操作,可以按如下方式传递:

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

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

编辑(被否决后):

在您的情况下,有效的url应该是:

$.get('url', function (data) {
    alert(data);
});
您的url“/transaction/ajaxGetContactLastDateOfDeparture/”+联系人ID将被删除 不是“计算”

但是,

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

然后,处理文件(.asp、.php等)将返回所需的值 期待。

Gus

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

编辑(被否决后):

在您的情况下,有效的url应该是:

$.get('url', function (data) {
    alert(data);
});
您的url“/transaction/ajaxGetContactLastDateOfDeparture/”+联系人ID将被删除 不是“计算”

但是,

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

然后,处理文件(.asp、.php等)将返回所需的值
应为。

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


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

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

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

您应该了解Ajax、异步行为和事件驱动编程。它不是那样工作的。



您应该了解Ajax、异步行为和事件驱动编程。它不是那样工作的。

重复的@Alxandr在问题的细节上,我同意这是相同的。但是,如果他不知道解决办法,我可以看出它看起来是不一样的。我只是把它贴了出来,因为它比再次贴答案要快。当我在另一个问题中详细解释了这个问题时,我只是认为这可能会有所帮助。不要试图说hist GoogleFoo不是最新的或任何东西。你需要更具体地试图引起我们的注意。你的问题充其量只是模糊的@我认为问题很清楚。他给出了一个测试用例,并明确说明了问题所在和问题所在。仅仅因为你被否决并不意味着这是一个无效的问题。@Alxandr在问题的本质上是重复的,我同意这是相同的。但是,如果他不知道解决办法,我可以看出它看起来是不一样的。我只是把它贴了出来,因为它比再次贴答案要快。当我在另一个问题中详细解释了这个问题时,我只是认为这可能会有所帮助。不要试图说hist GoogleFoo不是最新的或任何东西。你需要更具体地试图引起我们的注意。你的问题充其量只是模糊的@我认为问题很清楚。他给出了一个测试用例,并明确说明了问题所在和问题所在。仅仅因为你被否决并不意味着这不是一个有效的问题。提到这一点甚至是一种可能性就像给一个孩子玩剑,并告诉他要小心。不了解异步工作原理的人不应该知道这种可能性,这对他们来说似乎是一个简单的解决方案,而他们真正需要的是掌握事件驱动编程的工作原理,并重新构造代码以适应该模型。在单线程环境中执行同步操作是完全错误的。我同意,而且我永远不会建议任何人这样做,因此这是旁注。我只是直接回答了这个问题。提到这一点,甚至有可能就像给一个孩子玩剑一样,告诉他要小心。不了解异步工作原理的人不应该知道这种可能性,这对他们来说似乎是一个简单的解决方案,而他们真正需要的是掌握事件驱动编程的工作原理,并重新构造代码以适应该模型。在单线程环境中执行同步操作是完全错误的。我同意,而且我永远不会建议任何人这样做,因此这是旁注。我只是直接回答了这个问题。它是有效的url,AJAX是有效的。它不仅仅返回值。请看我上面的问题。不,这不是一个有效的url。url以文件扩展名(.html、.asp、.php等)终止。在这种情况下,您希望我们相信您的参数“contactId”是一个文件名吗?我将编辑我的答案,以便你能理解我的意思;尽管Ktash已经指出了和我一样的事情。@zequinha bsb这可能是一个完全有效的URL,原因有很多。首先,它可以是一个目录,其中将使用默认页面。其次,它可以使用重定向来重定向到页面。最后,它可能是一个没有扩展名的文件,服务器知道如何处理和提供服务。URL不是这里真正的问题。@zequinha bsb URL是100%有效的。您不需要
.php
.html
或任何