使用toArray时非法调用

时间:2013-09-22 19:05:06

标签: javascript jquery arrays

我对我的代码没有太多帮助,但我似乎正在使用我的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的:

function 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 + '()');
           }
        }
    });
}

1 个答案:

答案 0 :(得分: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);