将数据发布到 JSONP

Posted

技术标签:

【中文标题】将数据发布到 JSONP【英文标题】:POSTing data to JSONP 【发布时间】:2011-05-12 09:14:36 【问题描述】:

是否可以将数据 POST 到 JSONP?还是所有数据都必须作为 GET 请求在查询字符串中传递?任何示例代码。

谢谢

【问题讨论】:

嗨阿布,JSONP 不能确实用于后期操作。在更大的范围内,它甚至不能用作可靠的技术,因为它基于 javascript 发射,这被许多人视为安全威胁(一些托管商不允许您托管使用 JSONP 的 Web 服务)。只是出于好奇——你为什么需要 POST——你可以通过使用参数调用 get 来做一个“合乎逻辑”的帖子——比如说,我可以向 Db 添加东西并读回它的身份没问题。从 REST 意识形态的角度来看,这并不完全正确,但你知道.. 【参考方案1】:

这是一个例子:

   $.ajax(
        url: ajaxUrl,
        dataType: 'jsonp',
        type: 'GET',
        cache: false,
        success: sCallbackFunction,
        error: eCallbackFunction,
        jsonpCallback: jsonpCallbackFunction,
        data: dataObject
    );

【讨论】:

【参考方案2】:

如果你使用 jQuery,试试 $.post()

http://api.jquery.com/jQuery.post/

编辑: 更详细的解决方案在这里:How to use getJSON, sending data with post method?

【讨论】:

来自该页面:“由于浏览器安全限制,大多数“Ajax”请求都受制于同源策略;该请求无法成功地从不同的域、子域或协议中检索数据。” POST 不能跨域工作。 如果浏览器、框架、服务器等都支持 CORS,则 POST 可以跨域工作。【参考方案3】:

不,您不能将数据发布到 JSONP。 JSONP 必须作为脚本标签“提交”,而脚本标签不能 POST 信息。

希望这会有所帮助。

【讨论】:

hmmm 你有如何提交jsonp的示例代码吗?

以上是关于将数据发布到 JSONP的主要内容,如果未能解决你的问题,请参考以下文章

JSONP将数据发布到其他域

无法在跨域上使用 JSONP 发布数据

Jsonp

使用 POST 向 JSONP 请求发送数据

JSONP原理及实现

JSONP原理及实现