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" } ]
我认为“要求仅适用于属性名称,而不是数据值。