0
/* Helper function to clean up any current data we have stored */
function insertSerializedData(ids, type) {
    // Get anything in the current field
    current_data = $('#changes').val();
    if (!current_data) {
        var data = new Array();
        data[type] = ids;
        $('#changes').val(JSON.stringify(data));
    } else {
        var data = JSON.parse($('#changes').val());
        data[type] = ids;
        $('#changes').val(JSON.stringify(data));
    }
    console.log($('#changes').val());
}

我正在使用以下函数将数据添加到当前 JSON 对象或创建一个新的 JSON 对象,以便稍后在 PHP 中使用。stringify() 方法是否仅适用于 FF?我正在使用谷歌浏览器,并且在使用 conosole.log() 函数时得到一个空对象...

另外,如果您尝试使用相同的键存储两个值会发生什么?我假设它会覆盖......所以我应该在最后的数组中添加一个随机数学数字,以防止重复出现?

谢谢 :)

4

2 回答 2

2

这些行可能会导致问题:

var data = new Array();
data[type] = ids;

... 因为 JavaScript 中的数组与 PHP 中的数组不太一样。我想你的意思是更好地表达...

var data = {};
data[type] = ids;

此外,current_data似乎是这个函数的本地函数,因此它也应该用 . 声明为本地的var。没有看到任何其他问题......除了类似的功能已经在 jQuery .data()方法中实现。

更新:这里是jsFiddle玩。) 从我的尝试看来,数组对象不匹配实际上是导致 Chrome 行为的原因。

于 2012-06-22T00:14:55.353 回答
0

我重新格式化了一下,但这似乎有效。它将#changes元素的“value”属性设置为 JSON 字符串。我假设type参数应该是您要分配的数组的索引?

function insertSerializedData(ids, type) {
  var changes = jQuery('#changes'), arr, val = changes.val();
  if (!val) {
    arr = [];
    arr[type] = ids;
    changes.val(JSON.stringify(arr));
  } else {
    arr = JSON.parse(val);
    arr[type] = ids;
    changes.val(JSON.stringify(arr));
  }
  console.log(changes);
}
于 2012-06-22T00:26:18.093 回答