Json RPC jquery ajax 调用
Posted
技术标签:
【中文标题】Json RPC jquery ajax 调用【英文标题】:Json RPC jquery ajax call 【发布时间】:2012-04-08 15:41:54 【问题描述】:我试图在页面加载时发送一个 json RPC ajax 请求。这是我的javascript代码:
$(document).ready(function()
var data="orderID=<?=$_POST['orderID'];?>&&lang=eng";
$.ajax(
url: "ajax/get_json_variables.php",
type: "POST",
data: data,
cache: false,
success: function (html)
var splited=html.split("|");
if(splited[0]=="0")
alert(splited[1]);
else
$.ajax(
url: "https://91.199.226.106/ssljson.php",
type: "POST",
data: splited[1],
cache: false,
dataType:"json",
success: function (html)
alert(html);
);
);
);
通过第一个 ajax 请求,我得到第二个请求的 json 字符串。谷歌浏览器给了我这个错误:
XMLHttpRequest cannot load https://91.199.226.106/ssljson.php. Origin http://www.nver.am is not allowed by Access-Control-Allow-Origin.
我不明白这是什么问题?感谢您的帮助。
【问题讨论】:
非常常见的错误。这是因为91.199.226.106
和www.nver.am
不一样。它们必须相同
【参考方案1】:
问题是由Same Domain Policy 引起的,解决起来可能很棘手。如果你没有使用 jQuery,有几种方法可以解决这个问题并仍然实现所需的功能,那就是使用 iframe 和跨域消息传递帮助程序,例如 EasyXDM,或者动态注入标签以获取 JSON称为JSONP 的特殊格式。
感谢您使用的是 jQuery,因此您可以使用 http://api.jquery.com/jQuery.getJSON/ 和 JSONP 来解决同源策略。
【讨论】:
【参考方案2】:我认为这可能是与“同源政策”有关的问题。您不能像正在执行的那样对不同的域或使用不同的协议执行不同的 ajax 调用。
这里有一些参考: http://en.wikipedia.org/wiki/Same_origin_policy http://***.com/questions/1105934/ajax-http-https-problem http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
【讨论】:
以上是关于Json RPC jquery ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章
使用 JQuery AJAX 时跟踪 JSON RPC 问题
Trac JSON RPC 问题 - 将 jQuery AJAX 与 PHP 代理一起使用
带有 jQuery 的 Python JSON RPC - ServiceRequestNotTranslatable