Я пытаюсь передать json из php jquery, после того как вы попали в массив 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; }
После использования этой функции таким образом,
$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); } }) })
Как я могу исправить эту ошибку и как я могу прочитать json из jquery?
Вам не нужен вызов $.parseJSON
поскольку jQuery автоматически делает это, потому что, если вы не укажете свойство dataType
jQuery пытается угадать его и вызывает правильную функцию для анализа ответа до того, как данные будут обработаны функцией успеха
$.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' } ]
(с несколькими объектами в массиве – сокращенными для ясности)
Он фактически анализировал ОК, используя eval, но вместо JSON.parse. (Я не использую jQuery здесь.)
Проблема исчезла, когда я изменил значение «на» для значений:
[ { "firstName": "Joe", "lastName": "Smith" } ]
Я думал, что «требование предназначено только для имен свойств, а не для значений данных.