JSON.parse:意外的角色

我正在尝试从php jquery传递一个json,在进入一个sql查询数组后得到以下javascript错误。

JSON.parse: unexpected character 

返回sql结果的函数:

 public function selectassocSql($sql){ $i = 0; $resSelect = array(); mysql_query("SET NAMES 'utf8'"); $result = mysql_query($sql); while ( $row = mysql_fetch_assoc($result) ) { $resSelect[$i] = $row; $i++; } mysql_free_result($result); return $resSelect; } 

以这种方式使用此function后,

 $sql = "SELECT id, code, name FROM table WHERE code LIKE '%$codcli%' "; $v = $data->selectassocSql($sql); echo json_encode($v, JSON_FORCE_OBJECT); 

而javascript代码是这样的:

 $('#formclientes').submit(function(e){ e.preventDefault(); $.ajax({ type: 'POST', url:$(this).attr('action'), data:$(this).serialize(), success:function(data) { //console.log("SUCCESS " + data); var json_cli = $.parseJSON(data); } }) }) 

我如何纠正这个错误以及如何从jquery读取json?

您不需要$.parseJSON调用,因为jQuery会自动执行此操作,因为如果您未指定dataType属性,jQuery会尝试猜测它并调用正确的函数来解析响应,然后将数据处理到success函数

  $.ajax({ type: 'POST', url:$(this).attr('action'), data:$(this).serialize(), success:function(data) { //console.log("SUCCESS " + data); var json_cli = data; } }) 

看看这个问题为什么’jQuery.parseJSON’没有必要?

我刚刚在FF10.0.2中遇到过这样的数据:

 [ { "firstName": 'Joe', "lastName": 'Smith' } ] 

(arrays中有多个对象 – 为了清晰起见缩短了)

它实际上使用eval解析了OK,而不是JSON.parse。 (我这里不使用jQuery。)

当我将值改为’to’时,问题就消失了:

 [ { "firstName": "Joe", "lastName": "Smith" } ] 

我认为“要求仅适用于属性名称,而不是数据值。