无法循环访问JSON对象

时间:2015-04-21 11:27:05

标签: javascript object

我正在创建一个JS对象,然后对其进行字符串化并尝试循环键值对,但它给出了奇怪的结果。请帮忙。

var gv_array = {};
var gv_cookie_name = "_gv";
var gv_cookie_expiry = 1;
var $inv = jQuery.noConflict(); 

$inv('.product-image').bind('inview', function(event, isInView) {
   if (isInView) {
    var a = $inv(this).data('productid');       
    if(jQuery.inArray(a,gv_array) === -1){
        gv_array[a]=0;
    } 

    // Converting the array into JSON to save it to cookie

        var json_gv_arr = JSON.stringify(gv_array); 
        setCookie(gv_cookie_name,json_gv_arr,gv_cookie_expiry);

  }
});

$inv(document).ready(function(){
  setInterval('sendGV()',3000);
});

function sendGV(){
  var gv_cookie_val = getCookie(gv_cookie_name);
    gv_cookie_val = JSON.parse(gv_cookie_val);
   var gv_cookie_array = new Array();
      $inv.each( gv_cookie_val, function( key, value ) {
        if(value == 0){
               gv_cookie_array.push(key);
            }
     });
   alert(gv_cookie_array);
 }

当我尝试提醒它时,JS对象看起来像这样。

 {"2234":0,"4563":0,"4555":0}

我需要从值为0的对象发送id以插入到数据库中,并且在从AJAX接收成功消息之后,我需要将对象中的id的状态更改为1.

UPDATE :即使解析了JSON字符串,它也无法做任何事情。

2 个答案:

答案 0 :(得分:0)

尝试如下:

var data = {"2234":0,"4563":0,"4555":0};

$.each(data,function(key,value){
    console.log(key+":"+value);
})

答案 1 :(得分:0)

纯javascript:

data = {"2234":0,"4563":0,"4555":0};
keys = Object.keys(data);   // ["2234", "4563", "4555"]

for(i = 0; i < keys.length; i++){
  console.log(data[keys[i]]);   // 0, 0, 0
}

并设置值:

for(i = 0; i < keys.length; i++){
  data[keys[i]] = 1
}

console.log(data); // Object { 2234=1,  4563=1,  4555=1}