我已经尝试找到此问题的解决方案几个小时了,但以下代码根本不适用于 Internet Explorer 11。它适用于 Chrome 和 Firefox。使用 IE11 时,帖子已提交,但提交的表单为空。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
</head>
<body>
<form action="/Mandate/Edit" id="mandateForm" method="post">
<input id="ExternalId" name="ExternalId" type="hidden" value="" />
<input id="mandateName" name="mandateName" type="text" />
<a href="#" id="md-submit">Create</a>
</form>
<script type="text/javascript">
$(function () {
$("#md-submit").on("click", function (e) {
e.preventDefault();
var form = $("#mandateForm");
var request = $.ajax({
type: "POST",
url: form.attr("action"),
data: {
mandateName: "test4711"
},
dataType: 'json',
cache: false
});
});
});
</script>
</body>
</html>
非常感谢您的帮助。
The serialize()
方法不会将表单数据转换为 Json...
这应该可行——IE 11 中的输出将是{"ExternalId":"","mandateName":"4343"}
:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
</head>
<body>
<form action="/Mandate/Edit" id="mandateForm" method="post">
<input id="ExternalId" name="ExternalId" type="hidden" value="" />
<input id="mandateName" name="mandateName" type="text" />
<a href="#" id="md-submit">Create</a>
</form>
<script type="text/javascript">
function form_to_json (selector) {
var ary = selector.serializeArray();
var obj = {};
for (var a = 0; a < ary.length; a++) obj[ary[a].name] = ary[a].value;
return JSON.stringify(obj);
}
$(function () {
$("#md-submit").on("click", function (e) {
e.preventDefault();
var form = $("#mandateForm");
var request = $.ajax({
type: "POST",
url: form.attr("action"),
data: form_to_json(form),
dataType: 'json',
cache: false
});
});
});
</script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)