2012-06-05 131 views
1

我有外部的json URL。在外部服務器訪問JSON

http://kun6858.iptime.org:8080/apps/list/?app_mb_no=9

我訪問此JSON使用jQuery $ .getJSON(..)

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
<script> 
$.getJSON(
    "http://kun6858.iptime.org:8080/apps/list/?jsoncallback=?", 
    { 
     app_mb_no : 9 
    }, 
    function(data) { 
     console.log(data); 
    } 
); 
</script> 
</body> 
</html> 

但使用上面的源代碼我無法訪問JSON。

我不知道如何訪問外部服務器的JSON。 我的源有問題嗎?或JSON?


供大家參考,這是屏幕截圖..

enter image description here

+0

這是jQuery的AJAX的祕密.. http://stackoverflow.com/questions/7936610/json-uncaught-syntaxerror-unexpected-token –

回答

0

您需要使用JSONP進行跨域訪問。因此,你必須修改你的AJAX調用。

一個很好的解釋了這個場景是在這裏:

http://www.jquery4u.com/json/jsonp-examples/

+0

試圖用(函數($){VAR URL = 'http://kun6858.iptime.org:8080/apps/list/'; $ .ajax({type:'GET', url:url, async:false, contentType:「application/json」 , dataType:'jsonp', data:{ \t app_mb_no:9 \t } }); })(jQuery);這但是一樣... –

+0

嗨,帕特里克,你的服務器應用程序支持jsonp? 如示例中所示,您需要將jsonp響應包裝在jsoncallback函數中。 此致敬禮, Monsi –

0

三點:

  1. app_mb_no需要在你的Ajax調用價值?例如app_mb_no : 9
  2. 可以使用.ajax相當於:$.ajax({ url: url, dataType: 'json', data: data, success: callback });
  3. 你有沒有在Web服務器上運行的代碼?你需要這樣做。
+0

我在你回覆後在我自己的服務器上試過了。但也發生了同樣的情況..和修改後的app_mb_no:9 –

+0

轉到javascript控制檯,它是否有與跨域的東西有關的東西? –

+0

我使用chrome,它給我「未捕獲的SyntaxError:意外的令牌:」 –

0

我不知道它是如何工作的,但是這解決了我的問題。

在ServletResponse的

response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setContentType("Content-Type:application/json;charset=UTF-8"); 

和HTML

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
<script> 
var url = "http://localhost:8080/apps/list/?app_mb_no=9"; 


if ($.browser.msie && window.XDomainRequest) { 
    // Use Microsoft XDR 
    var xdr = new XDomainRequest(); 
    xdr.open("get", url); 
    xdr.onload = function() { 
    var JSON = $.parseJSON(xdr.responseText); 
    if (JSON == null || typeof (JSON) == 'undefined') 
    { 
     JSON = $.parseJSON(data.firstChild.textContent); 
    } 
    processData(JSON); 
    }; 
    xdr.send(); 
} else { 
      $.ajax({ 
      type: 'GET', 
      url: url, 
      processData: true, 
      data: {}, 
      dataType: "json", 
      success: function (data) { processData(data); } 
      }); 
} 

function processData(data) { 
    console.log(data); 
} 
</script> 
</body> 
</html> 

如果有人知道更好的方法教我添加此!感謝

+0

在IE8測試但沒有工作 –

+0

對於我自己,http://stackoverflow.com/questions/7936610/json-uncaught-syntaxerror-unexpected-token –