发布HTML标头中显示的JSON数据

时间:2010-01-15 12:00:10

标签: jquery jsonp

在网站上使用Firebug,我注意到了这个JSON POST请求:

POST /xxxx/yyy
Host test.it
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type text/plain; charset=UTF-8
Referer http://test.it/preview/2.1284/2.1988/2.16289
Content-Length 186
Cookie userId=61080064567894730d450a494fee0af5
Pragma no-cache
Cache-Control no-cache

{id:4,method:"contentBridge.setComponentValue",params:["7.92961", "name", "Welcome", "", {"javaClass": "java.util.HashMap", "map": {"en": false, "es": false, "de": false, "fr": false}}]}

问题是知道他们正在使用jQuery,jsonrpc和polopoly cms,是否可以发布相同的JSON数据,但是可以从我的网络服务器上托管的页面发布?

1 个答案:

答案 0 :(得分:2)

此处的标题并不重要,除了顶部的HTTP动词POST

相关位是JSON字符串:它看起来像JSONRPC调用 - 这是具有idmethodparams的外部对象。这些参数是一个数组,最后一个参数似乎是一个JSON序列化的Java类。

您可以使用jQuery轻松自己使用它:

$.ajax({
  url: 'yourserver.com/service',
  dataType: 'json',
  data: {
        id:4,
        method:"contentBridge.setComponentValue",
        params:[
            "7.92961", 
            "name", 
            "Welcome", 
            "", 
            {
                "javaClass": "java.util.HashMap", 
                "map": {
                    "en": false, 
                    "es": false, 
                    "de": false, 
                    "fr": false
                }
            }
        ]
    },
  success: function() { /*  */ }
});

如果此脚本从浏览器运行(例如作为Ubiquity脚本),您应该没问题,但如果它在不同站点的页面上运行,则会出现很多问题。我认为默认情况下所有浏览器都会阻止跨域AJAX调用。