2012-03-13 91 views
0

我想開發一個使用JQUERY移動應用程序的移動應用程序。對於其數據,我的應用程序需要訪問返回JSON對象的現有服務。Jquery移動AJAX請求到外部JSON數據失敗

$.ajax({ 
      url: 'http://pruebanico.comze.com/prueba2.json',  
      dataType: 'text',  
      jsonp: 'jsoncallback', 
      timeout: 5000,  
      success: function(json, status){ 

      alert (json); 
      }); 

當執行這段代碼時,會顯示一個未定義的錯誤。

具有在Firebug返回的頁面結果仔細一看,這似乎是一切都OK了JSON-明智

{"totalResultsCount":0,"geonames":[]} 

什麼可以是未定義錯誤的問題?

+0

您可以隨時將返回的XML作爲DOM或jQuery對象處理,並使用'$ .children()'_et al_找到你正在尋找的節點。 – Bojangles 2012-03-13 16:33:46

+0

如果根據瀏覽器將其視爲DOM,它將很可能剝去一些標籤,可能是'',''和''。跨瀏覽器的方式並不簡單。 – Alexander 2012-03-13 16:47:31

+1

如果沒有說明您的問題,請更正您的問題。這是無用的。 – Alexander 2012-03-14 14:30:39

回答

1

第一個問題是你有一個語法錯誤。您未打開與您打開的相同數量的圓括號/大括號。它應該是這樣的:

$.ajax({ 
    url: 'http://pruebanico.comze.com/prueba2.json', 
    dataType: 'text', 
    jsonp: 'jsoncallback', 
    timeout: 5000, 
    success: function(json, status) { 
     alert(json); 
    } 
});​ 

第二個問題似乎是,你的服務器沒有返回JSONP但只是普通的JSON,這導致跨來源例外。

你需要修復你的服務器代碼,改爲返回類似

jsoncallback({"totalResultsCount":0,"geonames":[]}) 

OR

您的服務器上實現CORS(跨域資源共享),但要注意的是,當前的版本Opera和Internet Explorer尚不支持標準版本的CORS。 (IE有自己的XDomainRequest對象,但它與CORS標準不同,兩種瀏覽器的下一個版本都會支持標準的CORS支持)

+1

非常感謝。這確實是一個CORS問題。 – nicBBB 2012-03-16 06:57:32