我有这样的剧本。
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
?
答案 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等)将返回您的值 期待。