我想知道我的代码是否出错了。我想做2个AJAX帖子。如果第一个成功,它应该执行第二个。在这里你可以看到我的代码:
var lat = $('#lat').val();
var lng = $('#lng').val();
var test;
$.ajax({
url: "http://api.geonames.org/findNearbyPostalCodes",
type: "GET",
data: {lat: lat, lng: lng, radius: 20, maxRows: 100, country: "CH", username: "bbag8274"},
success: function(scriptData, textStatus, jqXHR){
// second
test = scriptData;
alert($.parseXML( test ));
$.ajax({
url: "test_data.php",
type: "POST",
data: {xmldata: test},
contentType: "text/xml",
success: function(secondScriptData, textStatus, jqXHR){
alert(secondScriptData);
},
error: function(jqXHR, textStatus, errorThrown){
alert('Unknown error, report it!');
}
});
// end second
},
error: function(jqXHR, textStatus, errorThrown){
alert('fail');
}
});
我创建了var test
来测试它提醒我的内容。这就是重点。它总是提醒我null
。因此,我的参数scriptData
始终为null
。我无法弄清楚为什么。我在哪里弄错了或者根本没有错误?
建议表示赞赏:)
提前致谢
干杯
答案 0 :(得分:2)
您正在调用的API正在返回一个XML对象。它具有正确的content-type
XML标头,并且您没有覆盖jQuery的解析引擎。这意味着jQuery在将XML文档传递到scriptData
之前将其解析为DOM。
然后将该值传递给$.parseXML
。这是一个接受字符串输入并解析为DOM的方法。
由于DOM不是字符串,因此它将转换为一个("[Object document]"
)。这不是有效的XML,因此XML解析器将为您提供null
。
请勿使用$.parseXML
。
然后你会遇到另一个问题。
data: {xmldata: test}
也会导致DOM转换为字符串"[Object document]"
,因此您不会在下一个请求中获取XML文档。
如果您需要回复的原始文字,请使用jqXHR.responseText
代替scriptData