使用变量URL的jquery $ .ajax函数

时间:2010-07-23 04:52:18

标签: jquery ajax

var array = new Array();
$.get('comics.txt', function(data) {
    array = data.split(",");
    for(var i = 0; i < array.length; i++)
    {
        var $page = array[i];
        $.ajax({
            url: $page,
            success: function(data) {
                alert(data);
            }
        });
    }
});

comics.txt是一个文件,其中包含一些以逗号分隔的网址。

在上面的代码中,$ .ajax调用不起作用; $ page是正确的URL,但它在上下文中不起作用。警报(数据)导致出现空白警报框。我需要帮助找出一种方法来从数组中的每个页面获取数据。

提前致谢。

3 个答案:

答案 0 :(得分:6)

在您的域名中是$page个网址?...如果没有,则无法执行ajax ...

same domain policy


  

如果是这样,我如何通过外部URL的javascript获取数据?

你可以从你的服务器上得到它......

例如..

var array = new Array();
$.get('comics.txt', function(data) {
    array = data.split(",");
    for(var i = 0; i < array.length; i++)
    {
        var $page = array[i];
        $.ajax({
            url: 'your/server/url.php?page=' + $page,
            success: function(data) {
                alert(data);
            }
        });
    }
});

your/server/url.php可以为您提供该页面...

答案 1 :(得分:0)

您无法从客户端的浏览器向其他域发出请求。这是一个巨大的安全风险。如果文本文件中的URL与javascript正在运行的域位于同一个域,则此代码将起作用。

答案 2 :(得分:0)

您可以通过动态向DOM添加脚本元素来跨站点脚本,其中src属性指向您喜欢的位置;只要src中引用的内容返回JavaScript(protip:在类似AJAX的行为的XSS末尾执行预定义函数),它就可以工作。

网站1:

<script type="text/javascript">
$(document).ready( function() {
   $('body').append($("<script>").attr('src', "http://mydomain.com/xss.js"));
} );

function alerty (thing) {
    alert(thing);
}
</script>

网站2(xss.js):

var mystring = "hello";

if (typeof(alerty) != "undefined") {
   alerty(mystring);
}

显然,URL不必是一个平面文件 - 它可能是由PHP根据URL中的GET请求构造的JavaScript。此外,这假设您可以控制远程数据,您可能没有。