我正在尝试保存.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
谢谢!
答案 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
。)