2

我的代码没有太多,但我似乎正在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");

                }   
            });  

Ajax调用:

函数 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 + '()');
           }
        }
    });
}
4

1 回答 1

2

您的问题是您将 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);
于 2013-09-22T19:41:06.090 回答