2014-01-08 66 views
1

第一:我是AJAX的新手,剛剛瞭解一些基本知識約PHP對.php文件的AJAX請求返回空字符串

我想做一個AJAX發佈到.php文件。要做到這一點,我得到了這樣的代碼:

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的信息。

建議表示讚賞

在此先感謝

+7

你不能做Ajax請求,除非您使用JSONP不屬於當前域。查看維基百科有關[同源策略]的文章(http://en.wikipedia.org/wiki/Same-origin_policy)。 – h2ooooooo

+0

我不確切地知道你的意思。我不能這樣做?感謝您的鏈接,我會檢查它 – Roman

+0

lat和lng是什麼? – Ventura

回答

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/

+0

這沒有幫助:/如果我添加dataType它不再加載 – Roman

+1

它在這裏工作:http://jsfiddle.net/t5jA5/ – Ventura

+0

好吧。然後我的代碼中有其他錯誤。我會再看一遍,並嘗試修復它。這個答案是一個代碼的正確答案** ** – Roman

1

它可能是你指定POST參數,雖然你做一個GET請求?

更改URL中類似

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

...讀:http://www.geonames.org/export/web-services.html

+0

如果我使用GET,我有'data:{}'函數中的所有參數,如果我使用POST,我在'url: '功能。它應該不重要我使用。唯一的區別是,使用GET時,用戶將看到url,而不使用POST。或者我完全錯誤的評論? :) – Roman

+0

好的。對不起,你是對的。但是其他的東西在數據線上是不正確的。它不應該讀取 數據:'{「lat」:47.644200,「lng」:9.18026,「radius」:20,「maxRows」:100,「country」:「CH」,「username」:「bbag8274」} ', – theking2

+0

是的,這是它讀取。這是成功的,但第二篇文章並不成功。因爲在第二個AJAX後,它執行錯誤功能,而不是成功功能 – Roman