2011-05-09 74 views
5

我最近試圖從使用jQuery的URL獲得一些響應。因此,我將jQuery API Get Request Tutorial的獲取請求示例複製到我的項目中,並試圖運行它,但是我的調試消息告訴我,它不能繼續。我嘗試了使用簡單請求的JavaScript Ajax庫,但它沒有奏效。jQuery在HTTP URL上獲取請求

所以我問你,如果你能以某種方式幫助我。

這就是我所做的,但沒有任何迴應。

var url = "http://www.google.com"; 

$.get(url, function(data){ 


    alert("Data Loaded: " + data); 
    }); 

難道我可能忘記了包括ajax或jQuery庫。爲了更好的理解,我有c和obj-c的經驗,這就是爲什麼我認爲圖書館缺失。

在每個示例中,只有一個像「test.php」這樣的短url。我的完整HTTP網址是否錯誤?

感謝您的高級答案。

溴 尼克

回答

12

我提供了一個示例場景,以幫助您開始:

<!-- Include this jQuery library in your HTML somewhere: --> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script 

這可能是最好的一個外部JS文件裏面包括:

//Listen when a button, with a class of "myButton", is clicked 
//You can use any jQuery/JavaScript event that you'd like to trigger the call 
$('.myButton').click(function() { 
//Send the AJAX call to the server 
    $.ajax({ 
    //The URL to process the request 
    'url' : 'page.php', 
    //The type of request, also known as the "method" in HTML forms 
    //Can be 'GET' or 'POST' 
    'type' : 'GET', 
    //Any post-data/get-data parameters 
    //This is optional 
    'data' : { 
     'paramater1' : 'value', 
     'parameter2' : 'another value' 
    }, 
    //The response from the server 
    'success' : function(data) { 
    //You can use any jQuery/JavaScript here!!! 
     if (data == "success") { 
     alert('request sent!'); 
     } 
    } 
    }); 
}); 
+0

非常感謝你spryno724,我將在下班時嘗試這個。謝謝 – NicTesla 2011-05-10 08:35:07

+0

非常感謝你!驗證了幾種可能性之後,我拿出了你提到的那個。對於所有其他人來說,誰想要更多的解決方案使用代理服務器(就像其他人在這裏用PHP展示的,或者YQL,這是一個雅虎代理服務器,或者如果你使用tomcat,你可以自己編寫代理服務器),或使用腳本標籤,就像我選擇的解決方案。我需要它作爲我的學士論文,所以謝謝你們! BR – NicTesla 2011-05-16 19:28:44

+0

沒問題,很高興能幫到你! – 2011-05-16 21:55:15

0

你只可以從你的域/服務器

+0

所以它不能發送一個http url的請求? – NicTesla 2011-05-09 20:29:31

+0

只要該url與腳本位於同一臺服務器上即可。你可以從你的服務器請求一個php頁面來讀取你需要的URL。 – user489872 2011-05-09 20:30:45

+0

你將如何執行一個http請求,以excample谷歌使用JavaScript? – NicTesla 2011-05-09 20:33:09

9

訪問的網頁你打的Same Origin Policy關於Ajax請求。

簡而言之,JS/Ajax在默認情況下只允許觸發與HTML頁面所在的域相同的域的請求。如果您打算在其他域上發起請求,則必須支持JSONP和/或設置Access-Control headers才能使其工作。如果這不是一個選項,那麼你必須在服務器端創建一些代理並使用它(請小心,因爲可以禁止從其他使用機器人的站點泄漏太多)。

+0

是否有向URL發送請求的可能性,即「超出我的域」 – NicTesla 2011-05-09 20:31:45

+1

是的,請使用服務器端語言自己創建一個代理。基本上,讓你的服務器請求一個URL並返回響應。然後你可以使用ajax連接到你的服務器。例如在PHP中,你可以使用'curl()'來實現這一點。讓它將URL作爲請求參數,並將'curl()'結果回顯給響應。儘管如此,小心!根據策略,其他站點有資格禁止您的服務器的IP以奇怪模式連接到它們。如果主機沒有公開的ajax api,那麼更好的辦法是查看。 Google有幾個公共ajax API。 – BalusC 2011-05-09 20:32:23

+0

好的,你將如何在JavaScript中做到這一點? – NicTesla 2011-05-09 20:34:50

2

正如其他人所說,你不能訪問另一臺服務器上的文件。有一個黑客壽。如果您使用的是服務器端語言(如我假設你),你可以簡單地這樣做:

http://myserver.com/google.php

<?php 
    echo get_file_contents('http://www.google.com'); 
?> 

http://myserver.com/myscript.js

$.get('google.php',function(data){ console.log(data) }); 

這應該工作!