Javascript $。每个抛出错误:无法使用“in”运算符在中搜索“37”

Javascript $。每个抛出错误:无法使用“in”运算符在中搜索“37”,javascript,jquery,json,Javascript,Jquery,Json,我有一个JSON对象,如下所示: var data = "{'key1' : 'value1', 'key2' : 'value2'}"; 由于它是JSON格式的,不需要解析,所以我只想使用$迭代对象。如下所示: $.eachdata,函数索引,值{ alertindex+:+值; }; 它抛出了一个控制台错误 Uncaught TypeError: Cannot use 'in' operator to search for '37' in {'key1' : 'value1', 'key

我有一个JSON对象,如下所示:

var data = "{'key1' : 'value1', 'key2' : 'value2'}";
由于它是JSON格式的,不需要解析,所以我只想使用$迭代对象。如下所示:

$.eachdata,函数索引,值{ alertindex+:+值; }; 它抛出了一个控制台错误

 Uncaught TypeError: Cannot use 'in' operator to search for '37' in {'key1' : 'value1', 'key2' : 'value2'}(…)
我不知道出了什么问题。这是什么?

使用以下代码:

 $.each(JSON.parse(data), function(index, value) {
   alert(index + ": " + value);
 });
使用此代码:

 $.each(JSON.parse(data), function(index, value) {
   alert(index + ": " + value);
 });

它不是有效的json。所以它会抛出错误

$(document).ready(function() {

  var data = {};
  data.key1 = "value1";
  data.key2 = "value2";

  $.each(data, function(index, value) {
      alert(index + ": " + value);
      });
 });

演示:

它不是有效的json。所以它会抛出错误

$(document).ready(function() {

  var data = {};
  data.key1 = "value1";
  data.key2 = "value2";

  $.each(data, function(index, value) {
      alert(index + ": " + value);
      });
 });

演示:

您只需将分配给数据变量的值的方式更改为如下所示:

var data = {key1 : 'value1', key2 : 'value2'};
代替

var data = "{'key1' : 'value1', 'key2' : 'value2'}";

您只需将分配给数据变量的值的方式更改为如下所示:

var data = {key1 : 'value1', key2 : 'value2'};
代替

var data = "{'key1' : 'value1', 'key2' : 'value2'}";

数据是字符串,事件无效JSON@Pranav你能详细说明一下吗?$。每个都可以申请一个对象或数组。。。但是您使用的是一个字符串,或者创建一个对象,或者创建一个有效的json并解析它,因为它是json格式的,不需要解析,这是完全错误的。JSON必须解析为本机JavaScript值。现在,您有一个甚至不包含JSON的字符串。不能在字符串上使用$。每个。数据是字符串,事件无效JSON@Pranav你能详细说明一下吗?$。每个都可以申请一个对象或数组。。。但是您使用的是一个字符串,或者创建一个对象,或者创建一个有效的json并解析它,因为它是json格式的,不需要解析,这是完全错误的。JSON必须解析为本机JavaScript值。现在,您有一个甚至不包含JSON的字符串。不能在字符串上使用$.each.data={'key1':'value1','key2':'value2'}是否有错误?必须使用dom elementyup中的数据属性设置数据变量,因为它被视为字符串,如果尝试转换json对象,可能会因为ascii字符而出错。您也可以使用这种方式来声明对象。代码变量数据={key1:value1,key2:value2};data={'key1':'value1','key2':'value2'}是否错误?必须使用dom elementyup中的数据属性设置数据变量,因为它被视为字符串,如果尝试转换json对象,可能会因为ascii字符而出错。您也可以使用这种方式来声明对象。代码变量数据={key1:value1,key2:value2};解释差异可能会有所帮助。以前数据是以字符串格式分配的。因此,需要从开始和结束删除,使其成为对象。并且key没有任何类型,所以不需要将key包装为“”。因此,在进行这些更改之后,它将是一个具有多个键值对的适当对象。解释差异可能会有所帮助。以前的数据是以字符串格式分配的。因此,需要从开始和结束删除,使其成为对象。并且key没有任何类型,所以不需要将key包装为“”。因此,在进行这些更改之后,它将成为具有多个键值对的适当对象。