使用jQuery提交表单(json编码,ajax,解析原始url/方法)
Submit form with jQuery (json encoded, ajax, parse original url/method)
我发现了很多关于在没有json的情况下提交表单以及在javascript代码中静态指定url和方法提交表单的问题。
但我真正想要的是一种方法,让我的所有表单以表单最初指定的方式发送ajax请求,唯一的区别是我希望数据是json编码的。
例如,像这样的表单
<form role="form" action="api/login" method="POST">
<input name="email" value="my@email.com" type="text"/>
<input name="password" value="mypassword" type="text"/>
<button type="submit">Login</button>
</form>
提交时应该自动生成这样的ajax请求:
POST /api/login HTTP/1.1
Content-type: application/json
{
"email": "my@email.com",
"password": "mypassword"
}
而无需在javascript代码中再次指定方法或url。
我不想为我写的每一个表单都写新的代码。我只想有一个片段,可以自动将上面提到的应用于任何表单。
您可以尝试这样的
$(document).on('submit','form',function(e){
e.preventDefault();
$form = $(this);
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: getObject($form.serializeArray()),
success: function (response) {
//Success Handler
}
});
return false;
});
function getObject(data) {
var paramObj = {};
$.each(data, function(_, kv) {
if (paramObj.hasOwnProperty(kv.name)) {
paramObj[kv.name] = $.makeArray(paramObj[kv.name]);
paramObj[kv.name].push(kv.value);
}
else {
paramObj[kv.name] = kv.value;
}
});
return paramObj;
}
$(function() {
$('form').submit(function(){
$.post(
$(this).attr('method'),
$('form').serialize(),
function (data) {
proccessmyData(data);
}
);
return false;
});
});
您可以使用proccessmyData(data)编写成功回调函数
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 使用javascript加载并显示来自另一个域的页面,而不显示原始URL
- php get_contents-保留源文件的原始url
- 从另一个域的 iframe 中的代理访问父/原始 URL(同源策略)
- 传递url时保留原始反斜杠的问题
- 如何链接到url,然后在退出时返回到原始url
- 有没有办法更改浏览器's的URL,而不将第一个原始请求重定向到服务器
- 如何在通过iFrame提交表单后更改当前url以移动到其原始url
- Ajax get,如果没有找到原始url,则替换url
- PhantomJs:如何停止重定向到另一个URL并加载原始URL
- 使用jQuery提交表单(json编码,ajax,解析原始url/方法)
- 如何获得原始的引用url时调用javascript?
- 在本例中,使用jquery获取原始url
- 在URL中存储值,在浏览器中保留原始值