0

我正在开发一个使用 ajax 调用从服务器获取 html 的应用程序。当我在服务器上运行它时,一切正常。

但是当我在 localhost 上运行时,出现“Access-Control-Allow-Origin”错误。我环顾四周,似乎使用 jsonp 可能是解决方案。

所以,我的 ajax 调用看起来像这样:

$.ajax({
    url: url,
    dataType: 'jsonp',
    crossDomain: true,
    type: 'GET',
    success: function(data){
        // should put the data in a div
    },
    error: function(){
        //do some stuff with errors
    }
});

我从服务器获取 html,但我总是有这个错误:

Uncaught SyntaxError: Unexpected token < 

有没有办法将 jsonp 响应包装在 html 中?

谢谢!

4

2 回答 2

2

您不能使用 JSONP 来获取 HTML 文档。您需要将 HTML 包装在 JavaScript 变量中。JSONP 有一些非常具体的要求才能使其正常工作,包括回调函数/属性。如果您无法控制托管目标页面的服务器,您将无法使其正常工作。这是一项安全预防措施,可防止随机页面从您通过 AJAX 调用登录的站点窃取您的个人信息。

更新

我更彻底地阅读了你的问题。听起来您的问题是您处于一个没有相关资源的开发环境中。JSONP 不是答案,因为仅仅为了让您的页面在开发中工作而运行起来很麻烦。您应该创建目标 HTML 的本地副本并使用相对或服务器绝对 URL 来获取它,例如,"/the/page/i/need.html"而不是"http://myserver.com/the/page/i/need.html"

于 2012-09-06T03:35:23.220 回答
1

如果要通过jsonp获取数据,那么服务器端需要支持jsonp。

没有办法只是改变dataType来获取数据。

如果服务器端不支持 jsonp,那么你需要在你的 localhost 中做一个代理。

于 2012-09-06T03:32:42.963 回答