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.106www.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 代理一起使用

jq调用ajax的总结

模仿JQuery封装ajax功能

带有 jQ​​uery 的 Python JSON RPC - ServiceRequestNotTranslatable

使用数据库 codeigniter 的 JSON RPC 服务