我有这个ajax调用函数。
function saveData(ip)
{
$JQ.ajax({
type: "POST",
url: "all_actions.php",
data:
{
page_url:document.URL,
ip_address:ip
},
success: function(responce)
{
if(responce)
{
var newtoken;
newtoken=responce;
return newtoken;
}
}
});
}
然后我有另一个功能
function getToken()
{
var ip=myip
var mytoken;
mytoken=saveData(ip);
alert(mytoken);
}
我的令牌在alert中提供undefined。虽然如果我在savedata响应中提醒newtoken变量,它会在alert box中给出正确的值。为什么如果我返回它没有分配给mytoken。
是时间延迟问题。??
需要你的帮助......
答案 0 :(得分:1)
您无法从asynchronous
电话回来。
您必须使用success
函数中的返回数据。无论你要对token
做什么,都要在success
处理程序中编写代码。
success: function(responce)
{
if(responce)
{
var newtoken;
newtoken=responce;
// Global variable
sourceid = newtoken;
return newtoken; // This won't work
}
}
另外
function getToken()
{
var ip=myip
var mytoken;
mytoken=saveData(ip); // This won't return any data
alert(mytoken); // This won't give you anything useful
}
答案 1 :(得分:1)
嗨朋友这是我正在寻找的解决方案。
function saveData(ip)
{
return $JQ.ajax({
type: "POST",
url: "all_actions.php",
data:
{
page_url:document.URL,
ip_address:ip
},
async: false,
}).responseText;
}
function getToken()
{
var ip=myip
var mytoken;
mytoken=saveData(ip);
return mytoken;
}
答案 2 :(得分:0)
AJAX中的第一个'A'是'异步'。在AJAX请求有机会完成之前,您的警报正在运行。你需要处理你想对jQuery的success: function()
或.done()
函数内部的响应做什么:
success: function(responce)
{
if(responce)
{
var newtoken = responce;
// Work here with newtoken...
}
}