2011-07-23 65 views
0

我正在使用jQuery來訪問Yahoo的Geolocation API。即使我能夠成功從服務器檢索數據,我也無法讓jQuery成功解析數據。我試過$ .ajax()和$ .getJSON,每個都返回相同的失敗:parsererror和「無效標籤」。「invalid label」parsererror with jQuery and Yahoo's Geolocation API

通過我在互聯網上的挖掘,我發現「無效標籤」可能是JSON未包含在括號中的結果,但我無法弄清楚如何在數據之前包裝數據得到解析。我甚至不相信這是問題所在。

這裏是我的代碼:

$(document).ready(function() { 
    var url = "http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=?"; 

    $.getJSON(url, function() { alert("success"); }) 
     .error(function(data) { alert(JSON.stringify(data)); }); 

    }); 

只使用$阿賈克斯的替代版本如下:

$.ajax({ 
    url: url, 
    data: {}, 
    dataType: "jsonp", 
    contentType: "text/plain", 
    success: function(json) { 
    alert("success"); 
    }, 
    error: function(x,y,z) { 
    alert(JSON.stringify(x)); 
    } 
}); 

提前很多感謝。

回答

1

您嘗試訪問的API不支持JSONP。所以你不能使用它與JavaScript由於same origin policy限制。嘗試在瀏覽器中粘貼以下網址:

http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=foo

如何看callback參數完全被忽略?服務器返回純JSON,而不是您需要的JSONP。作爲一種解決方法,您可以在您的域中編寫一個服務器端腳本,作爲雅虎和您的域之間的橋樑。然後你會發送AJAX請求到你的腳本。

+0

我試圖將回調和解析推送到客戶端以釋放服務器資源。猜猜我必須讓服務器處理它。 – samullen