什么时候使用json和jsonp时使用jquery $ .ajax?

时间:2012-04-25 08:13:55

标签: php jquery ajax cakephp jsonp

在我们的网站中,有些页面是SSL,有些页面是非SSL。

例如:

http://www.example.com/search/patients
https://www.example.com/patients

现在,我正在http://www.example.com/search/patients页面上搜索病人,并通过https://www.example.com/patients函数和jQuery $.ajaxdataType=json发送服务器请求。我无法获取数据。

问题:

  1. 当我们从同一服务器上的jsonp httphttpshttps请求时,我应该使用http吗?

    < / LI>
  2. 如果我对两个网址都使用SSL,那么它只适用于dataType=json

  3. 由于

3 个答案:

答案 0 :(得分:5)

由于Same Origin Policy,只有在以下情况下才允许您的ajax请求: 域名,应用层协议和(在大多数浏览器中)端口 运行脚本的HTML文档的编号是相同的

在您的情况下,应用程序层协议不同,这就是您的脚本失败的原因

可能的解决方案是:

  • JSONP,必须由服务器提供

  • CORS,这是一个更优雅,更干净的解决方案,但尚未完全支持IE(IE7不支持它,IE8有一些限制)

答案 1 :(得分:3)

如果您对两个网址都使用SSL,那么它应该有效。同样@Waqas Raja建议,最好使用相对URL。

e.g。 $.ajax({url: '/search/patients'})

答案 2 :(得分:1)

您需要使用CORS,代理或JSONP来获取来自不同来源的内容。改变方案(从http到https或其他方式)正在改变原点。

将数据从安全服务器拉入不安全的页面消除了使用SSL的许多好处。

如果您通过SSL获取页面和数据源,那么您可以使用普通的JSON并且不会引入这些安全问题。