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

对.php文件的AJAX请求返回空字符串,php,ajax,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: {la

第一:我不熟悉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');
    }
});
如果第一个post成功,它将执行第二个post。但是第二个执行错误:函数。这是我的.php文件:

$xmlroot = $_POST['xmldata'];

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

foreach($doc->getElementsByTagName('postalcode') as $postalcode){
    $zipcodes = $postalcode->nodeValue . " ";
}
问题是:AJAXpost返回一个空警报框(
alert(jqXHR.responseText);
),而.php文件返回一个错误:

 **PHP Warning:  DOMDocument::loadXML(): Empty string supplied as input**
所以错误表明我的
$xmlroot
变量为空,对吗?如果是,为什么是空的?它应该用
xmldata
中的信息填写

欢迎提出建议


提前感谢

您是否可以在执行GET请求时指定POST参数

更改URL,如

http://api.geonames.org/findNearbyPostalCodes?lat=47&lng=9&username=demo

…并读取:

第一个ajax调用中的数据即将正确调用。尝试将数据类型设置为文本,并在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)
    }
});

实例:

除非使用jsonp,否则无法对非当前域执行ajax请求。看看维基百科上的文章,我不知道你到底是什么意思。我不能这样做?谢谢你的链接,我会检查它什么是lat和lng?我的意思是。给出lat和lng的实际价值。这样测试会更容易。lat和lng是一些坐标。例如,您可以使用
lat=47.644200
lng=9.180260
,如果我使用GET,我拥有
data:{}
函数中的所有参数,如果我使用POST,我拥有
url:
函数中的所有参数。我用什么都不重要。唯一的区别是,使用GET时,用户将看到url,而使用POST时,用户将看不到url。还是说我完全错了好啊对不起,你是对的。但数据行中还有一些不正确的地方。它不应该读取数据:{“lat”:47.644200,“lng”:9.18026,“radius”:20,“maxRows”:100,“country”:“CH”,“username”:“bbag8274”},是的,这就是它读取的数据。这是成功的,但第二篇文章并不成功。因为在第二篇AJAX文章中,它执行了error函数,而不是success函数,这没有帮助:/I如果我添加了数据类型,它就不会再加载了。那么我的代码中还有其他错误。我会再看一次,并尝试修复它。这个答案是一个代码的正确答案,该代码在更改后可以工作,请尝试在PHP上转换XML