jquery - 返回 "success:"方法的数据?

标签 jquery ajax return-value

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

但我找不到方法说“返回以“'success:'”开头的在线调用方法的值...

最佳答案

编辑: An answer发布到问题@Tomalak 链接告诉我这个很酷的“ promise ”概念,您可能也想看看。

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

关于jquery - 返回 "success:"方法的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753844/

相关文章:

javascript - 折叠 DataTable 中的表头破坏了我的表格格式

Javascript - 无法解析通过 PHP 发送的 JSON 或字符串

jquery - asp.net MVC ajax 确实回发而不是在我的 div 中渲染部分 View

jquery - 如何添加 jQuery .on click 到 Tablesorter th?

java - 如何修复此 Date 类,使日期在创建新的 Date 实例时启动后不能更改?

javascript - jQuery 和 Prototype 之间有什么相似之处?

javascript - 在 respond_to 中呈现不同的 Javascript 文件

javascript - 从我的 Controller 返回不同于 200 的代码以触发 ajax 错误是否被认为是好的做法?

javascript - 输入文本的 JQuery 值不能用作参数

java - 在冒泡排序中按升序或降序排序