簡體   English   中英

來自用戶瀏覽器的Web請求

[英]web request from the user browser

是否可以從用戶瀏覽器向另一個api發送Web請求,然后處理發回的結果?

我嘗試以下ajax代碼,但它不工作,我想知道是否可能,如果它是一個是的我怎么能實現它...

$(document).ready(function() {

        $.ajax({
            type: "GET",
            url: "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=xml",
            dataType: "xml",
            success: function(xml) {
                alert("sucess");
                $(xml).find('Ip').each(function() {
                    var ip = $(this).find('Ip').text();
                    alert(ip);

                });
            }
        });

    });

由於相同的原始策略限制,您僅限於將AJAX請求發送到您自己的域。 JSONP是一種常見的解決方法,但遠程站點需要支持它。 另一種解決方法是在域上創建服務器端腳本,該腳本將充當域和遠程域之間的橋梁,它將簡單地委托從javascript發送給它的AJAX請求。

應該可以,我也做了同樣的事情。

但是您必須將頁面放在同一台服務器上,您不能向另一台服務器發送請求,在這種情況下,您必須使用服務器上的代理來轉發呼叫。

只是添加到已經說過的內容:如果您無法創建自己的JSONP代理,則可以使用為您創建該代理的YQL服務 請注意,YQL將使用它自己的元數據包裝您的數據(除非有一種方法可以禁用它...)。

順便說一句,您應該使用JSON輸出而不是API服務的XML輸出。 JSON是一種更輕量級的格式,因此更適合Web。

下面是一個包含API URL(此時輸出JSON)和YQL的完整功能示例:

var apiRequestUrl = "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=json";
var yqlRequestUrl = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%20%3D%20%22";
yqlRequestUrl += encodeURIComponent(apiRequestUrl);
yqlRequestUrl += "%22&format=json&callback=?";

$.getJSON(yqlRequestUrl,
    function(jsonData) {
        alert(jsonData.query.results.json.Ip);
    });

最后,這篇文章可以派上用場: http//www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM