我的代码不是很多,但是我的Illegal invocation变量似乎正在获取order-如果我注释掉,它可以正常工作并在console.log中显示

$('body').on("click", "#brands_by_category_submit_btn", function (e) {
                 e.preventDefault();
                var self       = $(this);
                var order      = $(".order").toArray();
                var id         = $("#manID").data("id");
                var brand_name = $("#brand_name").data("id");
                var data       = grabData(true);


                if(data.length)
                {
                    var data_array = {
                        id : id,
                        brand_name : brand_name,
                        cat_id     : data,
                        order      : order,
                        state      : 1
                    };

                    var url = $("#brands_by_category_submit_btn").data("url");

                    //console.log(data_array);
                    ajaxCall(url, data_array);

                    alert("Categories Updated");

                }
            });


AjaxCall:

函数ajaxCall(url,data_array,div_id,callback_fn){

    return $.ajax({
        type:'POST',
        url:url,
        beforeSend: function(){
             $("#" + div_id).html("<img src='http://www.#.co.nz/files/large/ajax-loader.gif' alt='Loading..' title='Loading..'/>");
        },
        data:data_array,
        complete:function (data) {
           $("#" + div_id).html(data.responseText);

           if(callback_fn != null)
           {
               eval(callback_fn + '()');
           }
        }
    });
}

最佳答案

您的问题是您无法将HTML元素数组转换为POST数据,而这根本是不可能的。相反,您应该遍历元素并获取其.text()属性:

var self       = $(this);

var order      = []; //or "new Array()". Whatever you prefer for readability
$(".order").each(function() {
    order.push($(this).text());
});

var id         = $("#manID").data("id");
var brand_name = $("#brand_name").data("id");
var data       = grabData(true);

09-25 22:24