对.php文件的AJAX请求返回空字符串

时间:2014-01-08 12:16:26

标签: php ajax

首先:我是 AJAX 的新手,只是了解一些关于 PHP 的基础知识。

我想在 .php 文件中发布 AJAX 帖子。为此,我得到了这段代码:

var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();

$.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){
        $.ajax({
            url: 'privatkunden_data.php',
            type: 'POST',
            data: {xmldata: jqXHR.responseText, address: $('#address').val()},
            success: function(secondScriptData, textStatus, jqXHR){
                alert('suc');
            },

            error: function(jqXHR, textStatus, errorThrown){
                alert(jqXHR.responseText);
            }
        });                         
    },

    error: function(jqXHR, textStatus, errorThrown){
        alert('fail');
    }
});

如果第一篇文章成功,则执行第二篇文章。但第二个执行错误:功能。这是我的 .php 文件:

$xmlroot = $_POST['xmldata'];

$doc = new DOMDocument;
$doc->loadXML($xmlroot);

foreach($doc->getElementsByTagName('postalcode') as $postalcode){
    $zipcodes = $postalcode->nodeValue . " ";
}

问题是: AJAX 帖子返回空警告框(alert(jqXHR.responseText);), .php 文件返回错误:

 **PHP Warning:  DOMDocument::loadXML(): Empty string supplied as input**

所以错误说我的$xmlroot变量是空的,我是对的吗?如果是,为什么它是空的?它应该填入xmldata的信息。

建议表示赞赏

提前致谢

2 个答案:

答案 0 :(得分:1)

是否可以指定POST参数,尽管您执行了GET请求?

更改

之类的网址
http://api.geonames.org/findNearbyPostalCodes?lat=47&lng=9&username=demo

...并阅读:http://www.geonames.org/export/web-services.html

答案 1 :(得分:1)

第一次ajax调用中的数据正确。尝试将dataType作为文本并将此文本转换为PHP上的xml。

dataType: 'text'

示例:

$.ajax({
    url: 'http://api.geonames.org/findNearbyPostalCodes',
    type: 'get',
    dataType: 'text',
    data: {lat: '47.644200', lng: '9.180260', radius: 20, maxRows: 100, country: 'CH', username: 'bbag8274'},
    success: function(result){
      alert(result)
    }
});

实例:http://jsfiddle.net/t5jA5/