将$ .ajax响应保存到变量(xml)

时间:2014-06-05 12:45:33

标签: javascript jquery ajax xml

我正在尝试保存.ajax响应,该响应从REST接口查询xml,但我没有成功。到目前为止代码工作,我得到了响应,但最佳的是我想将一些项解析为javascript变量或者至少将整个响应保存到一个变量中。我的代码如下:

// the actual request
function request(url) {
    $.ajax({
        type : "GET",
        url : "localhost:8080/package/rest/pubs/getpubswithinbbox?south=41.886288445510516&west=12.483901977539062&north=41.893700240146295&east=12.500102519989014",
        dataType : "xml",
        success : function (data) {
            console.log("Successfully queried API!");
            console.log(data);

        },

        error : function (data) {
            console.log("An error occurred while processing XML file.");
        }
    });
};

//Code Ends

使用console.log(data)我也可以将文件视为文档,但是如前所述,我想将一些XML元素保存到变量中(或者将整个XML文档保存到以后的处理中)。

XML看起来像这样:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><osm generator="Overpass API" version="0.6">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2014-06-05T12:35:02Z"/>

  <node id="1701218666" lat="41.8885564" lon="12.4950752">
    <tag k="amenity" v="pub"/>
    <tag k="name" v="Camden Town"/>
  </node>
</osm>

您有关于如何处理我的代码段的任何提示吗?我想使用async: false

将请求设置为同步

谢谢!

3 个答案:

答案 0 :(得分:1)

在html体中创建div标签,在jquery中使用ajax部分只需使用$(#result).append(data);内部成功功能

答案 1 :(得分:0)

您在成功/错误回调中定义的响应对象可以用作任何其他JS对象。因此,如果您想要将其分配给现有变量,请执行此操作(尽管尽量避免使全局命名空间混乱),或者甚至使用jQuery的.data()函数将其附加到页面。例如:

// the actual request
function request(url) {
    $.ajax({
        type : "GET",
        url : "localhost:8080/package/rest/pubs/getpubswithinbbox?south=41.886288445510516&west=12.483901977539062&north=41.893700240146295&east=12.500102519989014",
        dataType : "xml",
        success : function (data) {
            console.log("Successfully queried API!");
            console.log(data);
            $('body').data('APIResult',data);
        },

        error : function (data) {
            console.log("An error occurred while processing XML file.");
        }
    });
};

然后,在脚本的其他地方,无论何时您想引用或使用API​​响应,只需调用它或将其分配给本地var,如下所示:

var APIData = $('body').data('APIResult');

答案 2 :(得分:-1)

foo = data

请注意,在异步函数解析之前,foo将保持未定义状态。

您可能应该在您希望的范围内声明foo(在var foo调用之外使用ajax。)