Chrome/FF 中的对象处理?

Object handling in Chrome/FF?

我有这个代码:

$('.gBook').click(function(){
        var values = [];
        var getDiff = $('#totalPrice').attr("data-value");
        var i = 0;
        $('td[data-check="true"]').each(function(){
                var valueToPush = { };
                valueToPush["price"] = $(this).attr("data-price");
                valueToPush["id"] = $(this).attr("data-id");
                valueToPush["diff"] = getDiff;
                values.push(valueToPush);
                i++;
        });

        var arrayToSend = {values};

        $.post( '<?php echo PATH;?>ajax/updateRoom.php',arrayToSend, function(data){
                if(data != "ERROR"){
                    $('#all-content').html(data).css("overflow-y","auto");
                }else{
                    alert("ERROR");
                }
        });
    });

在Chrome中,这一行报错var arrayToSend = {values};(Uncaught SyntaxError: Unexpected token })在Firefox中一切正常。 我想这是因为 FF 的 "loose" 错误处理,但我如何正确地处理它? 我试图在 $.each 之前用 var arrayToSend = new Object(); 初始化对象,但是在 POST.

之后给出了一个空数组

我的错误在哪里?

试试这个

var arrayToSend = {optionsChosen:values};

然后在 php 或您用于数据处理的任何内容中查找 POST 变量 optionsChosen。

您所做的是尝试创建一个参数数组为空的对象

你基本上是在你的代码中这样做的。不需要专家就可以看出这个说法有什么问题。

arrayToSend = new function() {
    this.(new Array(1,2,3)); // This is cringeworthy if you see it like this.
}

在我给出的示例中,它翻译成这样:

arrayToSend = new function() {
  this.optionsChosen = new Array(1,2,3);
}