如何解决帮助在ajax回调函数之间传递变量
| 好的,我正在构建一个向一个服务器发出ajax请求的东西,在那里它确定需要的URL,然后再向另一个地方发出新的ajax请求。多亏了SO =)的所有帮助,一切都在进步。但是,我再次陷入困境。我正在努力使变量根据需要返回到不同的函数。第二个(jsonp)请求返回一个json函数,如下所示:jsonResponse(
{\"it.exists\":\"1\"},\"\");
和我的代码...
var img = \"null\";
var z = \"null\";
$(document).ready(function()
{
$.ajax({
type: \"GET\",url: \"connect.php\",dataType: \"xml\",success: function parseXml(data)
{
$(data).find(\"ITEM\").each(function()
{
query = $(\"SKU\",this).text();
query = \'http://domain.com/\' + query + \'?req=exists,json\';
img = $(\"SKU\",this).text();
img = \'<img src=\"http://domain.com/\' + img + \'\">\';
var date =$(\"LAST_SCAN\",this).text();
$.ajax({
url: query,dataType: \'jsonp\'
});
$(\"table\").append(\'<tr>\'+\'<td>\' + (date) + \'</td>\' + \'<td>\' + (z) + \'</td>\');
});
}
});
});
// function required to interpret jsonp
function jsonResponse(response){
var x = response[\"it.exists\"];
// console.log(x);
if (x == 0) {
console.log(\"NO\");
var z = \"NO IMG\";
}
if (x == 1) {
console.log(img);
//this only returns the first image path from the loop of the parseXml function over and over
var z = (img);
}
return z;
}
所以我想我的问题是两个方面的。一个如何将img变量循环到该if语句中,然后一旦起作用,如何返回该z变量以在第一个xml解析器中使用?
解决方法
试试这种同步方法:
var itemQueue = [];
$(document).ready(function ()
{
$.ajax({
type: \"GET\",url: \"connect.php\",dataType: \"xml\",success: function parseXml(data)
{
itemQueue= $(data).find(\"ITEM\").map(function ()
{
return {
sku: $(\"SKU\",this).text(),date: $(\"LAST_SCAN\",this).text()
};
}).get();
getNextItem();
}
});
});
function getNextItem()
{
var item = itemQueue[0];
var query = \"http://domain.com/\" + item.sku + \"?req=exists,json\";
$.ajax({
url: query,dataType: \'jsonp\'
});
}
function jsonResponse(response)
{
var item = itemQueue.shift();
if (itemQueue.length)
{
getNextItem();
}
var x = response[\"it.exists\"];
var z = x == \"0\" ? \"NO IMG\" : \"<img src=\\\"http://domain.com/\" + item.sku + \"\\\">\";
$(\"table\").append(\"<tr><td>\" + item.date + \"</td><td>\" + z + \"</td>\");
}
, 将\'date \'存储在全局变量中,然后移动逻辑以将HTML元素附加到jsonResponse函数中。您无法从jsonResponse返回控制流,因为它是异步调用的,但是您可以继续通过该函数执行任何操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。