使用'脚本'进行Ajax响应访问数据类型

时间:2015-09-28 19:58:40

标签: javascript jquery html ajax

我正在编写一个连接到外部网站的简单脚本,使用jQuery抓取内容和进程。

该网站有一些安全系统可阻止与所有数据类型的ajax连接,不包括' script'和' jsonp' ' JSONP' dataType返回错误,因此我正在使用'脚本'通常成功的类型。

我试图访问那些应该是html代码但实际上是脚本的数据,因为以前强制使用dataType。

$.ajax({
    type: 'GET',
    url: 'http://website.com/index.php',
    data: { page: "name"},
    dataType: 'script',
    async: false,
    success: function(rsp) {
        alert("Success");
        console.log(rsp);
    },
    error: function() {
        alert('Failed!');
    }
});

在控制台中,我可以看到 "Uncaught SyntaxError: Unexpected token <"来自外部网站内容的开头(<html> ....) 我也看到了&#34;成功&#34;警报,但控制台显示&#39; undefined&#39;对于&#39; rsp&#39;属性。

我试图使用document.scripts.item(index)访问此脚本,但JS不可见 我确信该内容可以访问,因为它存在于我在Chrome中的开发人员工具中。它可以在网络选项卡中与我的jQuery链接脚本(jquery.min.js和jquery-ui.min.js)一起显示,但它应该是&#39; script&#39;尽管它的扩展名是.php。我甚至可以点击它,看看我想要的HTML代码的预览!

您对如何访问此文件有任何建议吗?也许来自缓存?

1 个答案:

答案 0 :(得分:0)

您正在申请HTML页面,但通过将dataType设置为"script",它需要JavaScript代码。它成功下载了HTML代码,但无法解析它。这就是为什么你可能会在开发工具中看到它。

出于安全原因,不允许在浏览器中使用跨域AJAX请求 唯一的例外是server especially allows it

如果您想从其他域检索网页,则需要在服务器端执行此操作。