我正在測試一個本地主機上的JavaScript代碼。該文件需要來自JSON格式的遠程服務器的數據。當我直接點擊JSON網址時,我得到的數據,但在JavaScript中,我得到空迴應。
可能是什麼原因?我正在使用jquery post方法來獲取數據。
我正在測試一個本地主機上的JavaScript代碼。該文件需要來自JSON格式的遠程服務器的數據。當我直接點擊JSON網址時,我得到的數據,但在JavaScript中,我得到空迴應。
可能是什麼原因?我正在使用jquery post方法來獲取數據。
正如其他人所說,你不能使用AJAX來訪問遠程服務器。你必須使用JSONP。如果您沒有控制其他服務器,或者如果其他服務器不提供JSONP,則必須使用代理。
在PHP中編寫一個非常簡單。 http://www.betavine.net/bvportal/blog/view.html?blogId=101&postId=ff8080811afe49d3011afe4bb5de0003
<?
ob_start();
$url = $_REQUEST['url'];
$curl_handle = curl_init($url);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy");
$content = curl_exec($curl_handle);
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE);
curl_close($curl_handle);
header("Content-Type: $content_type");
echo $content;
ob_flush();
?>
$.post
是一個ajax方法,您不能使用ajax方法來訪問不同來源的數據。
由於瀏覽器的安全限制,大多數「Ajax」的請求都受到 的同源策略;該請求無法成功檢索來自不同域,子域或協議的 數據。
有一個設置JavaScript的保護措施,你應該看看。這是相同的來源政策。基本上,這意味着如果您想爲來自服務器的數據執行XmlHttpRequest,而這個服務器與您所在的頁面不是同一個來源,那麼除非您跳過這些環節,否則您不能這樣做。
查看JSON-P或jQuery用於克服此問題的方法。
由於安全原因,您無法使用JavaScript訪問來自不同域的任何資源。 jQuery無法爲此做任何事情,但有一些方法可以實現這一點,如JSONP
或YQL
。
看看這個快速提示跨域AJAX
請求與YQL
。