【发布时间】:2011-05-27 21:24:42
【问题描述】:
好的,我正在构建一个向一个服务器发出 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 解析器中使用?
【问题讨论】:
-
您的代码缩进很差,缺少一些右大括号 (
}),并且有多余的分号 (;)。这让你很难理解你的代码和你想要做什么。 -
好的,我清理了它,希望它不会那么混乱......
-
必须将 JSONP 回调命名为“jsonResponse”吗?或者您能否在请求中指定回调名称?通常,您会在 JSONP 请求中指定回调名称,但我没有看到您在这里这样做。
-
是的,我无法控制返回的 json。它被包装在函数 jsonResponse 中,正如我在问题顶部显示的那样。哎呀,它被编辑掉了。我会添加它回来了。我有响应工作..所以它使用从第一个 parseXML 定义的 url 遍历每个请求并返回 1 或 0。然后我可以定义变量并在控制台中查看它们..我只是不知道如何将它们返回到原始函数
-
我在询问包装服务器返回的 json 的函数的名称。典型的 jsonp 请求 url 看起来像
http://foo.org/request?sku=12345&callback=jsonResponse。您是在告诉我您没有将函数名称“jsonResponse”传递给 url 中的服务器吗?如果没有,那对你来说会更棘手。您必须通过实现一个队列来使您的请求同步,一次处理一个,等待每个请求完成,然后再移动到下一个。
标签: javascript xml json function variables