返回“success:”方法的数据?

我正在尝试获取我使用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'); 

但是我没有找到说“以”’成功:’返回你在线调用的方法的价值的方法……“

编辑: @Tomalak问题的回答链接告诉我这个很酷的’Promises’概念,你可能也想看一看。

使用$ .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建议的方式异步地执行此操作仍然会好得多。

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错误