2012-08-26 21 views
0

嗨,我有一個問題在這裏 這是我的代碼,它的工作時,我寫「http:// localhost」和檢索內容,但是當我寫其他網站,如「http ://www.google.com「它不起作用。 我已經在我的虛擬主機中上傳了代碼給你們測試它。 這是鏈接。 http://faceproishere.netii.net/test.php 在這裏你可以看到我的代碼:jquery得到我的本地主機,但不是其他網站的作品

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
</head> 

<body> 
<input type="text" name="field1" id="field1" value="http://localhost"> 

<input value="load" type="button" onClick="my_function()"> 


<textarea cols="15" rows="12" id="frame1" style="float:left"></textarea> 
<div id="frame2" style="width:400px;height:400px;overflow:scroll;fl oat:left"></div> 


<script type="text/javascript"> 
function my_function() 
{ 
    if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0) 
    { 

     $.get($("#field1").val(),function(data) 
     { 
      $("#frame1").html(data) 
      $("#frame2").html(data) 
     }) 

    } 
} 
</script> 
</body> 
</html> 

TNX提前。

+0

是jQuery的託管在谷歌的CDN不應該是」'的https:// ajax.googleapis.com/AJAX /庫/ jQuery的/ 1.7.2/jquery.min.js' – Undefined

回答

3

您無法以其他來源以此方式訪問內容。出於安全原因,這是不允許的。另請參閱:https://developer.mozilla.org/en-US/docs/Same_origin_policy_for_JavaScript

如果您檢查瀏覽器的控制檯,可以非常輕鬆地看到此類問題。

+0

TNX很多,所以如何我可以做嗎? –

+0

通常,你不能。現在,有一個叫做CORS的新功能(https://developer.mozilla.org/en-US/docs/HTTP_access_control),可以在稍後的瀏覽器上使用,但前提是您嘗試訪問的資源允許它。如果你需要訪問一個feed,你可以通過JSON-P來完成。這並沒有直接解決這個限制,並且有點破解。您要做的最好的事情是建立一個服務器端代理。 – Brad

+0

好的,如果我使用ifarme而不是div,我可以解決這個問題嗎? –

0

如果您有權訪問curl,但您可以設置調用curl來檢索數據或地址。

curl是大多數Linux發行版中可用的bash工具。它可以在這裏找到http://curl.haxx.se/

你要做的是你設置一個本地請求,通過ajax將結果傳遞給你用curl獲取的站點。在大多數腳本語言中,可以通過shell調用curl。如果你已經安裝了curl並且需要腳本幫助,告訴我什麼語言,我可能會幫助你。

好吧,她是一個解釋。當我這樣做時,它可能不適合你,它在Ruby中很容易設置路徑並捕獲鏈接的參數。在PHP中可能會有點困難。

首先,您需要一些方法來設置調用使用curl的php腳本的本地路徑。最簡單的方法是簡單地將文件添加到您的Web路徑(取決於Web服務器和框架)。

文件curl_test.php你可以做財產以後像

$response = system('curl www.google.se', $returnvalue); 
echo($response) 

你可以這樣設置你的Ajax請求,運行該腳本是這樣的:

$.ajax({ 
    url: "localhost/curl_test.php", 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

訣竅則在於如何將正確的數據放入數據部分,以便您可以將變量發送到curl腳本,但如果您想要一個ruby sinatra示例,那麼生病讓你解決這個問題。

get '/data/:brand' do 
    data_link = "https://someplace.com/brands/#{params[:brand]}" 
    c = Curl::Easy.perform(data_link) 
    content_type :json 
    c.body_str 
end 
+0

是的,幸運的是我在我的服務器中有CURL。是的,你可以,它在php中。你能用php語言中的一些代碼來解釋你的想法嗎? –

+0

也請告訴我,如果我的問題將使用iframe而不是div元素解決或不。 –

+0

iframes不會解決問題。 –

相關問題