【问题标题】:Sending json via form vs. jquery/ajax通过表单与 jquery/ajax 发送 json
【发布时间】:2013-03-04 13:02:05
【问题描述】:

我有一个简单的表单,我可以在其中使用 Asana 的 API 成功创建一个新项目

<form action="https://app.asana.com/api/1.0/projects" id="newProject" method="post" name="myform">
    <input id="name" name="name" type="text" value="">
    <input id="workspace" name="workspace" type="text" value="498346170860">
    <input id="new" type="submit" value="Send">
  </form>

这很好用。创建了一个项目,并在浏览器窗口中返回了 json 输出。

但是当我尝试使用 .post .ajax 方法时,我得到“请求数据必须是 JSON 对象,而不是 null”。例如(coffeescript):

$("form").submit ->
    $.post $(this).attr("action"), $(this).serialize(), ((jsonData) ->
        console.log jsonData
    ), "json"

【问题讨论】:

  • 那是跨域的,所以你需要使用jsonp 或者在服务器端有某种可以向外部域发出请求的本地代理。
  • 或者你可以用所有参数向你的服务器发出ajax请求,并通过你的服务器发出API请求
  • 假设我禁用了浏览器安全等。它仍然无法工作?有没有办法提交上面的 html 表单,但在打开新标签页/页面之前捕获服务器的响应?
  • 另外,Asana api 不支持 jsonp。 ://

标签: jquery ajax json forms post


【解决方案1】:

jQuery.support.cors = true; 放在您的跨域ajax 请求之上。 Read more about this.

另外,您可能需要指定 contentType "application/json"

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2016-07-17
    • 2016-04-20
    • 1970-01-01
    • 2012-02-17
    相关资源
    最近更新 更多