【问题标题】:Post a form with JSONP [closed]使用 JSONP 发布表单 [关闭]
【发布时间】:2011-10-13 13:45:57
【问题描述】:

我想用 JSONP 发布表单,有什么可行的解决方案吗?

我想将表单从 jsonp 发布到不同的域。

【问题讨论】:

  • 请给我们一些代码!怎么会有人这样回答?
  • 您只能使用 JSONP 发送 GET 请求。
  • @vzwick 感谢您的快速回复。场景是我的服务器上有表单,但我想通过 ajax 将表单发布到不同的服务器,但 ajax 不允许这样做,所以我发现 jsonp 有助于将数据发送到 diff。服务器它适用于 GET 方法,但我想要不适用于 jsonp 的 POST 方法。有什么想法吗?
  • 不要认为他真的需要为此显示代码,这对我来说似乎是一个非常直接的问题:S

标签: jquery post jsonp http-post


【解决方案1】:

您不能使用 JSONP 进行跨源 POST。

但是,您可以:

  1. 将表单序列化为查询字符串,并与 GET 请求一起发送。
  2. 如果您可以只针对现代浏览器,请使用CORS(Cross Origin Resource Sharing)

【讨论】:

    【解决方案2】:

    一个 JSONP 请求只是创建一个带有函数调用的脚本标签:

    Javascript:

    var head = document.getElementsByTagName("head")[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script src = 'url_to_post.serverside?callback=callback_function';
    
    var callback_function(response) {
        head.removeChild(script);
        alert(response.abc); // returns def;
    };
    

    url_to_post.serverside:

    callback_function({"abc": "def"});
    

    希望你能明白为什么它只适用于 GET 请求

    :)

    【讨论】:

      【解决方案3】:

      您可以在 $.POST、$.GET、$.AJAX 方法的数据选项上使用它:

      $('form').serialize()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 2013-05-23
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 2016-06-21
        • 2011-09-01
        相关资源
        最近更新 更多