通过表单与 jquery/ajax 发送 json
Posted
技术标签:
【中文标题】通过表单与 jquery/ajax 发送 json【英文标题】:Sending json via form vs. jquery/ajax 【发布时间】: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。 ://
【参考方案1】:
将jQuery.support.cors = true;
放在您的跨域ajax 请求之上。 Read more about this.
另外,您可能需要指定 contentType "application/json"
【讨论】:
以上是关于通过表单与 jquery/ajax 发送 json的主要内容,如果未能解决你的问题,请参考以下文章
使用 JQuery AJAX 发送包含文件和附加 json 表单数据的 multipart/form-data
通过 jQuery.Ajax 向 MVC 控制器发送多个项目