我正在尝试使用jquery:
获取我编写的实用程序方法的返回值function loadFrames(coords, spritesheet) {
return $.ajax({
type: "GET",
url: coords,
dataType: "xml",
success: function(xml,code,obj) {return parseFrameData(xml, spritesheet);}
});
}
因此,此方法接收两个参数,打开一个文件(“plist”参数指向的文件)并运行parseFrameData方法。 后者返回一个对象数组。
我想以下列方式使用它:
var frames = loadFrames('player.xml', 'spritesheet.png');
但是我找不到说“以”'成功:'返回你在线调用的方法的价值的方式......“......
答案 0 :(得分:2)
修改:{@ 3}}发布在@Tomalak问题链接,告诉我这个很酷的“承诺”概念,您可能还想看一下。
使用$ .ajax的目的通常是发出异步请求。调用它并期望立即返回值将是同步请求。
话虽如此,您可以通过设置async:false
在同步模式下使用$ .ajax来执行您所要求的操作。这可能会影响锁定浏览器,直到请求完成。
function loadFrames(coords, spritesheet) {
var myFrames;
$.ajax({
type: "GET",
url: coords,
dataType: "xml",
async: false,
success: function(xml,code,obj) {myFrames = parseFrameData(xml, spritesheet);}
});
return myFrames;
}
var frames = loadFrames('player.xml', 'spritesheet.png');
我相信这会有效,但我没有一个好的方法来测试它。其他人可以确认这种方法吗?
以@Petah建议的方式异步地执行此操作仍然会好得多。
答案 1 :(得分:1)
Ajax以异步方式运行(意味着在后台运行,允许其他内容继续),因此您无法直接从中返回值。
但是,您可以将函数传递给Ajax请求完成后将调用的回调函数。
function loadFrames(coords, spritesheet, callback) {
$.ajax({
type: "GET",
url: coords,
dataType: "xml",
success: function(xml,code,obj) { callback(parseFrameData(xml, spritesheet)); }
});
}
另外,在旁注中,不要忘记通过将error
参数传递给ajax
来电来检查404和500等HTTP错误