您好我有以下数据是通过ajax到MVC控制器。它在IE上运行时工作得很好,但在firefox上运行时收到错误。我尝试改变这么多东西(添加dataTypes,contentType ......等等)。其中大多数导致数据也不会通过IE发送。
function sendData() {
var currData = new Array();
var elements = document.getElementById("formID").elements;
for (var i = 0, element; element = elements[i++];) {
if (element.value != "Submit Query") {
if (element.value != "") {
currData.push(element.value);
}
}
}
var finData = {values: currData};
$.ajax({
type: "POST",
url: "home/sendcurr",
data: finData,
traditional: true,
success: function (recData) {
populateObjData(recData);
},
error: function () {
alert("error");
}
});
}
在控制器中,我收到的数据为:
List<String> values
并在成功时将以下数据返回给ajax。
var jsonData = new JavaScriptSerializer().Serialize(_object);
return jsonData;
再次,这个现在在IE中完美运行,但不是Firefox! 非常感谢任何帮助!
答案 0 :(得分:1)
使用IE11 + Chrome50和FF46测试代码后,如果我使用或不使用the traditional style of param serialization.
,我获得了以下结果traditional: true:
Chrome --> "["values=1","values=2","values=Submit%20Query"]"
FF --> "["values=1","values=2","values=Submit%20Query"]"
IE --> "[values=1,values=2,values=Submit%20Query]"
traditional: false:
Chrome --> "["values%5B%5D=1","values%5B%5D=2","values%5B%5D=Submit%20Query"]"
FF --> "["values%5B%5D=1", "values%5B%5D=2", "values%5B%5D=Submit%20Query"]"
IE --> "[values%5B%5D=1,values%5B%5D=2,values%5B%5D=Submit%20Query]"
使用serialize代替结果:
Chrome: --> "["firstName=1","lastName=2"]"
FF --> "["firstName=1", "lastName=2"]"
IE: --> "[firstName=1,lastName=2]"
对于if问题,我写了一个关于错误的评论。
所以,我建议你减少代码行并编写类似的东西:
function sendData() {
var finData = $('#formID').serialize();
$.ajax({
type: "POST",
url: "z.html",
data: finData,
success: function (recData) {
//populateObjData(recData);
alert('success');
},
error: function () {
alert("error");
}
});
}
$(function () {
$('input[type="submit"]').on('click', function(e) {
e.preventDefault();
sendData();
});
});
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<form id="formID" action="z.html" method="post">
<input name="firstName" value="1">
<input name="lastName" value="2">
<input type="submit" value="Submit Query">
</form>
如果您有兴趣调试jQuery代码,可以查看:
jQuery.param = function( a, traditional ) {