jQuery AJAX Вызов PHP скрипта с возвратом JSON

Я разбил себе голову кирпичной стеной с этим, я пробовал множество решений в stackoverflow, но не могу найти тот, который работает!

В основном, когда я запускаю свой AJAX, PHP возвращает JSON, но AJAX показывает Undefined вместо значения:

JS :

/* attach a submit handler to the form */ $("#group").submit(function(event) { /* stop form from submitting normally */ event.preventDefault(); /*clear result div*/ $("#result").html(''); /* get some values from elements on the page: */ var val = $(this).serialize(); /* Send the data using post and put the results in a div */ $.ajax({ url: "inc/group.ajax.php", type: "post", data: val, datatype: 'json', success: function(data){ $('#result').html(data.status +':' + data.message); $("#result").addClass('msg_notice'); $("#result").fadeIn(1500); }, error:function(){ $("#result").html('There was an error updating the settings'); $("#result").addClass('msg_error'); $("#result").fadeIn(1500); } }); }); 

PHP :

  $db = new DbConnector(); $db->connect(); $sql='SELECT grp.group_id, group_name, group_enabled, COUNT('.USER_TBL.'.id) AS users, grp.created, grp.updated ' .'FROM '.GROUP_TBL.' grp ' .'LEFT JOIN members USING(group_id) ' .'WHERE grp.group_id ='.$group_id.' GROUP BY grp.group_id'; $result = $db->query($sql); $row = mysql_fetch_array($result); $users = $row['users']; if(!$users == '0'){ $return["json"] = json_encode($return); echo json_encode(array('status' => 'error','message'=> 'There are users in this group')); }else{ $sql2= 'DELETE FROM '.GROUP_TBL.' WHERE group_id='.$group_id.''; $result = $db->query($sql2); if(!$result){ echo json_encode(array('status' => 'error','message'=> 'The group has not been removed')); }else{ echo json_encode(array('status' => 'success','message'=> 'The group has been removed')); } } 

JSON Результат от firebug :

 {"status":"success","message":"success message"} 

AJAX Отображает результат JSON как Undefined, и я не знаю, почему. Я попытался отобразить добавление dataType='json' и datatype='json' . Я также попытался изменить его на data.status и data['status'] : пока еще нет радости.

Любая помощь могла бы быть полезна.

Сделайте это dataType вместо типа datatype .

И добавьте ниже код в php, поскольку ваш запрос ajax ожидает json и ничего не примет, но json.

 header('Content-Type: application/json'); 

Правильный тип контента для JSON и JSONP

Ответ, видимый в firebug, – это текстовые данные. Проверьте Content-Type заголовка ответа, чтобы проверить, является ли ответ json. Это должно быть application/json для dataType:'json' и text/html для dataType:'html' .

попробуйте отправить заголовок типа контента с сервера, используйте это непосредственно перед эхом

 header('Content-Type: application/json'); 

Я рекомендую вам использовать:

 var returnedData = JSON.parse(data); 

для преобразования строки JSON (если это просто текст) для объекта JavaScript.

Использовать метод parseJSON jquery для скрытой строки в объект

 var objData = jQuery.parseJSON(data); 

Теперь вы можете написать код

 $('#result').html(objData .status +':' + objData .message); 

Ваш тип данных неверен, измените тип данных для dataType.