Возврат JSON не работает должным образом

Я пытаюсь вернуть данные из базы данных и преобразовать их в json и отправить их обратно на мой javascript. Однако он не работает так, как планировалось, он возвращается как массив на javascript.

Javascript

function getData(id) { $.ajax({ url: 'some url', crossDomain: true, type: 'post', data: { id: id }, success: function (data) { var json = jQuery.parseJSON(data); alert(data); }, }); }; 

PHP

 <?php header("access-control-allow-origin: *"); $dbhost = 'you dont need this info'; $dbuser = 'you dont need this info'; $dbpass = 'you dont need this info'; $db = 'you dont need this info'; $dbserver = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to MySQL: " . mysql_error()); mysql_select_db($db) or die("Unable to select database: " . mysql_error()); if (isset($_POST['id'])) { $ID = $_POST['id']; } echo $ID; $result = mysql_query('SELECT * FROM clubmember WHERE clubID = "' . $ID . '"'); $row = mysql_fetch_assoc($result); $name = $row['name']; $clubID = $row['clubID']; $lID = $row['lID']; $sName = $row['sName']; $desc = $row['description']; $json = json_encode(array( 'name' => $name, 'clubID' => $clubID, 'lID' => $lID, 'sName' => $sName, 'description' => $desc )); echo $json; ?> 

Предупреждения javascript в виде [object Object], [object Object] … Что не должно быть так …

Не повторяйте $ ID в своем PHP. Используйте свойство ajax dataType jQuery и установите его в json. Использовать json-парсер javascript по умолчанию.

попробуйте оповестить json а не data ?

Javascript возвращает объект, потому что вы фактически предупреждаете объект. Попробуйте alert(data.name);

или alert(data.clubID); , это будет работать.

Вы должны указать тип данных, который запрашивает запрос ajax, иначе jQuery будет «интеллектуально» обнаруживать на основе типа MIME. Если вызов ajax получает данные json, он будет использовать его как объект JavaScript, поэтому вы получаете это предупреждение.

Это верно.

JSON – это объект. aka Javascript Object Notation . Это должно быть на случай. Он должен содержать ваши данные. Попробуйте data.* .

Кстати, если вы не очистите данные, поступающие от ваших пользователей, прежде чем использовать их с любым SQL-запросом, это вызовет проблемы.

См. Его в действии с базовым примером:

 // $_POST['id'] = '" OR 1"' $result = mysql_query('SELECT * FROM clubmember WHERE clubID = "'.$ID.'"'); 

Ваш запрос сейчас

 SELECT * FROM clubmember WHERE clubID ="" OR 1 "" 

Потому что 1 всегда верно, теперь я могу взять весь ваш клубный стол. Приветствия.

Даже если parseJSON возвращает объект, выполнение console.log должно показывать [Object, Object, ...] который является массивом объекта

Вызов .ajax () будет, если параметр dataType не указан, «разумно угадать», что возвращает запрошенная страница.
В случае JSON он передаст объект JavaScript в функцию успеха.

Рассмотрев ваш вопрос (ы), я считаю, что понимаю, что вы имеете в виду. То, что вы ожидаете, – это один объект (поиск с использованием SQL, как это было сказано очень небезопасно) с 5 свойствами, именем, clubID, lID, sName и описанием. Однако, похоже, что вы возвращаетесь, это несколько строк с двумя свойствами?
Вы говорите, что в то время как эхо php-скрипта имеет правильные значения (одна строка), но JSON получает несколько значений (/ rows).
Вы уверены, что PHP получает правильный ID от вызова AJAX?