2012-05-08 62 views
0

我有一個沒有回調的JSON調用。我想解析數據。jQuery和JSON網址沒有回調

$("button").click(function(){ 
    $.getJSON(
     "url", 
     function(result){ 
      $.each(result, function(i, field){ 
       $("div").append(field + " "); 
     }); 
    }); 
});​ 

和HTML

<button>Get JSON data</button> 
<div></div>​ 

但沒有任何獲取的數據。我的代碼有什麼問題?

+1

該網站需要支持jsonp才能做到這一點。像您使用它的JSON只對同一臺服務器上的文件起作用。 – OptimusCrime

回答

2

我Sarfraz同意。這是因爲它是基於遠程的請求。我過去解決這個問題的一種方法是使用服務器端文件(如.php或.aspx)加載URL,然後在該本地可訪問的文件上執行getJSON。

這是因爲您的服務器端文件可以連接到遠程主機。

例如,你可以創建一個示例test.php的文件,該文件的jQuery使用此代碼訪問:

<?php 
header('Content-type: application/xml'); 
//Get the remote content and output it for Jquery's Local use 
echo file_get_contents(url); 
?> 

然後只需調用(當然是相對的):

$("button").click(function(){ 
    $.getJSON(
     "/test.php", 
    function(result){ 
     $.each(result, function(i, field){ 
      $("div").append(field + " "); 
     }); 
    }); 
});​ 

使用像JSONP是好,但有時他們是矯枉過正。 我希望這有助於!

+0

謝謝,但我已經做了這個jQuery和HTML,而不使用PHP或任何服務器端編程。 – TheNone

+0

你沒有使用任何服務器端代碼的原因是什麼? – Nabster

1

從外觀上看,您遇到了same origin policy的情況。這基本上表明,您不能使用從您網頁上的其他主機檢索到的數據。

由於找不到服務的(英文)API文檔,我建議您檢查JSONP的API並嘗試使用該功能(如果存在)。

另一種選擇是寫你的服務器上的腳本,它充當數據代理:檢索從你的頁面的請求,將請求轉發到http://www.bigpara.com,從http://www.bigpara.com得到結果,然後把這些結果到您的網頁。

+1

我認爲OP知道他正在運行SOP(他在參數中有'callback')。我認爲他正在尋找一種方法來做到這一點,而無需指定回調 –

2

一個建議,因爲你正在試圖訪問不列入該網站似乎支持JSONP爲好,你可以嘗試從一些服務器端語言的內容,說PHP,像

<?php 
echo file_get_contents(url); 
?> 

而且使用jQuery的的getJSON

$(document).ready(function(){ 
    $.getJSON('your_server-side_page.php', function(data){ 
    $.each(data, function(i, entry) { 
     // Process your data here 
    }); 
    }); 
}); 

希望幫助