我正在创建一个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字符串,它也无法做任何事情。
答案 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}