0
我正在使用AJAX调用来从服务器获取HTML的应用程序。 当我在服务器上运行它时,一切正常。Jsonp跨域AJAX
但是当我在本地主机上运行时,出现了'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?
谢谢!
)抓住它,事实是,我得到的数据回来了..但带有“语法错误”..所以所有的代码都在客户端..但我无法使用它。 –
@GuillaumeleFloch是的,你可能会返回一些含义的数据,它必须导致语法错误,请检查jsonp的工作方式。 – xdazz
@GuillaumeleFloch获取语法错误的原因是JSONP利用动态连接的'
您不能使用JSONP来获取HTML文档。您需要将您的HTML包装到JavaScript变量中。 JSONP有一些非常具体的要求,使其能够正常工作,包括回调函数/属性。如果您不控制承载目标页面的服务器,则无法使其工作。这是一项安全措施,可防止随机页面通过AJAX呼叫从您登录的网站窃取您的个人信息。
UPDATE
我更仔细阅读你的问题。这听起来像是你的问题在于你在一个没有问题的开发环境中。 JSONP不是答案,因为为了使页面在开发过程中运行起来很麻烦。您应该创建目标HTML的本地副本,并使用相对或服务器绝对URL(例如
"/the/page/i/need.html"
而不是"http://myserver.com/the/page/i/need.html"
来源
2012-09-06 03:35:23 Pete
不,这不是一个开发工作...我需要那个在生产中运行.. –
@GuillaumeleFloch你在'localhost'上运行你的生产站点吗?你说它在服务器上工作正常。 – Pete
是的,我首先在服务器上开发了应用程序。但现在,我想把它作为一个移动应用程序来封装,这就是为什么我要在本地主机上测试它。 –