Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax成功地将数据发送到IE,但未在Firefox中发送_Javascript_Jquery_Ajax_Model View Controller - Fatal编程技术网

Javascript Ajax成功地将数据发送到IE,但未在Firefox中发送

Javascript Ajax成功地将数据发送到IE,但未在Firefox中发送,javascript,jquery,ajax,model-view-controller,Javascript,Jquery,Ajax,Model View Controller,您好,我有以下数据正在通过ajax传输到MVC控制器。当它在IE上运行时,它工作得非常好,但当它在firefox上运行时,它会收到一个错误。我尝试过改变很多东西(添加数据类型、内容类型等等)。大多数情况下,数据也不会通过IE发送 function sendData() { var currData = new Array(); var elements = document.getElementById("formID").elements; for (var i = 0

您好,我有以下数据正在通过ajax传输到MVC控制器。当它在IE上运行时,它工作得非常好,但当它在firefox上运行时,它会收到一个错误。我尝试过改变很多东西(添加数据类型、内容类型等等)。大多数情况下,数据也不会通过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
同样,现在这个功能在IE中非常有效,但在Firefox中却不行!
非常感谢您的帮助

使用IE11+Chrome50 annd FF46测试代码后,如果使用或不使用,我会得到以下结果

使用替代方法,结果如下:

Chrome: --> "["firstName=1","lastName=2"]"
FF      --> "["firstName=1", "lastName=2"]"
IE:     --> "[firstName=1,lastName=2]"
对于if问题,我写了一篇关于错误的评论

因此,我建议您减少代码行数,编写如下内容:

函数sendData(){
var finData=$('#formID').serialize();
$.ajax({
类型:“POST”,
网址:“z.html”,
数据:finData,
成功:函数(recData){
//populateObjData(recData);
警惕(“成功”);
},
错误:函数(){
警报(“错误”);
}
});
}
$(函数(){
$('input[type=“submit”]”)。在('click',函数(e){
e、 预防默认值();
sendData();
});
});


什么是
traditional:true
在这里做什么?你在firefox中遇到了什么错误?@PraveenKumar这是我发现的唯一一种方法,当控制器在IE中接收到数据时可以读取数据,否则它只会给我“null”而不是数组中的值列表。@Baraa我猜这就是导致FF失败的原因。做一件事。创建两个单独的AJAX函数,一个用于IE,另一个用于其他。在IE中使用
traditional:true
,对于其他人来说,不要包括这一点。看看这是否有效?@PraveenKumar将尝试使用itthanks进行深入分析,这有助于了解更多信息!
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]"
Chrome: --> "["firstName=1","lastName=2"]"
FF      --> "["firstName=1", "lastName=2"]"
IE:     --> "[firstName=1,lastName=2]"