我已经尝试了几个小时找到这个问题的解决方案,但以下代码根本不适用于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>
非常感谢你的帮助。
答案 0 :(得分:0)
在jquery中,表单序列化存在一些问题。我通常使用这个插件:http://jquery.malsup.com/form/#api
这似乎是解决问题的最简单方法。但它远非最干净的方式。您可以尝试的另一件事是:让服务器监听json requestdata。并将其序列化为json字符串。或者自己制作序列化功能。这就像3行代码。
答案 1 :(得分:0)
<!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" />
<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: $('form#myForm').serialize(),
dataType: 'json',
cache: false
});
});
});
</script>
</body>
</html>
答案 2 :(得分:0)
serialize()
方法不会将表单数据转换为Json ...
这应该有效 - IE11中的输出将为{"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>
答案 3 :(得分:0)
我得到同样的问题,但我通过将其添加到头标记
中解决了这个问题<meta charset="utf-8">
答案 4 :(得分:0)
今天我们在IE11中遇到了同样的问题。我发现这对我有用:
$.ajax({
type: "POST",
url: "./index.php",
data: { name: "John", time: "2pm" },
cache: false,
success: function(data){
$.ajax({
type: "POST",
url: "./index.php",
data: { name: "John", time: "2pm" },
cache: false
});
}});
&#13;
但这不是:
$.ajax({
type: "POST",
url: "./index.php",
data: { name: "John", time: "2pm" },
cache: false,
success: function(data){
}});
$.ajax({
type: "POST",
url: "./index.php",
data: { name: "John", time: "2pm" },
cache: false
});
&#13;
此时看起来如果您同时执行多个AJAX调用,POST数据将为空,除了第一次调用。当我在彼此之后执行它们时它起作用。
答案 5 :(得分:-1)
我发现激活&#34;增强保护模式&#34;在IE11上解决了这个问题。
Internet Options --> Advanced Options --> Enable Enhanced Protected Mode
之后,重新启动浏览器并发送POST数据。