AJAX帖子;变量始终返回null

时间:2013-12-19 10:35:57

标签: javascript ajax jquery

我想知道我的代码是否出错了。我想做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。我无法弄清楚为什么。我在哪里弄错了或者根本没有错误?

建议表示赞赏:)

提前致谢

干杯

1 个答案:

答案 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

相关问题