Конвертировать массив PHP JSON в массив JavaScript в AJAX?

-2

Я не могу преобразовать ответ AJAX в массив JavaScript. Все, что я получаю, это [object Object] в моем окне предупреждения.

var url = 'list_devices.php';
var modurl = url;
alert(modurl);
ajax.open("GET", modurl, true);
ajax.onreadystatechange = function () {
    if (ajax.readyState == 4) {
        if (ajax.status == 200) {
            //var json = JSON.stringify(ajax.responseText);
            var me = JSON.parse(ajax.response);
            //var me=jQuery.parseJSON(responseData);
            //alert(me);
            alert(json);
            //var uid=new Array();
            //uid=me.split(",");
            //$.mobile.navigate("#page1");
            //$('#devices').empty();
            //var temp=document.createElement('li');
            //for (var i=0; i<uid.length; i++) {
            //$('#devices').append('<li ><p>'+uid[i]+'</p></li>'); -->
            //}
            //$('#devices').append(temp);
        }
    }
}
ajax.send(null);
}

PHP:

(Я пытаюсь получить все IMEI user_id хранящиеся в сеансе.)

<?php
  header("content-type:text/javascript");
  session_start();
  $sql=new mysqli("hostname","user","pass","dbname");
  if(!$sql):
      echo "error connecting to database";
      die();
  else:
     $i=0;
     $temp=[];
     $q="SELECT imei FROM tbl_user_device where user_id='".$_SESSION['user_id']."'";
     $result=$sql->query($q);
     while($output=$result->fetch_array()):
        echo json_encode($output);      
     endwhile;
  endif;
?>
Теги:
cordova

2 ответа

1
Лучший ответ

[object Object] - это строковое представление объекта, когда вы видите это в предупреждении, что синтаксический анализ был успешным.

Используйте console.log(me); для просмотра содержимого объекта


<edit/>:

Похоже, вы хотите вернуть массив результатов и перебрать этот массив для печати данных.

В настоящее время вы возвращаете объект, вы должны заполнить массив этим объектом (или несколькими объектами при необходимости):

php для возврата массива:

<?php
  //the correct MIME-type for json is application/json
  header("content-type:application/json");
  session_start();

  //use your data here
  $sql=new mysqli("hostname","user","pass","dbname");

  if(!$sql):
      echo "error connecting to database";
      die();
  else:

     $temp=[];
     //I've modified the query to return multiple rows
     //but it will work also with a single row
     $q="SELECT  imei,user_id FROM tbl_user_device";

     $result=$sql->query($q);

     //you better use fetch_assoc here 
     while($output=$result->fetch_assoc()):
        //populate the array with results
        $temp[]=$output;

    endwhile;
 endif;
 //print the json
 die(json_encode($temp));
?>

Итерация по результатам:

    var url = 'list_devices.php';
    var modurl = url;

    ajax.open("GET", modurl, true);
    ajax.onreadystatechange = function() {
      if (ajax.readyState == 4) {
        if(ajax.status == 200) {
          var me= JSON.parse(ajax.response);
          //iterate over the array-items
          for (var i=0; i<me.length; i++) {
            var li=$('<li/>');
              //iterate over the properties 
              //of the current array-item
              for(var k in me[i]){
                li.append($('<p/>')
                            .append($('<strong/>').text(k+':'))
                            .append($('<code/>').text(me[i][k])));
              }
              $('#devices').append(li);
          }
        }
      }
    }

    ajax.send(null);
  • 0
    использование alert (me.imei) // imei является атрибутом объекта, я получаю требуемый вывод, как я могу распечатать все imei номера данных. какое условие я должен использовать в моем для цикла?
  • 0
    me.imei для меня содержит пустую строку {"0":"","imei":""} ... нет чисел
Показать ещё 9 комментариев
0

Это связано с тем, что ваши данные не обрабатываются. Попробуйте следующий код. У вас есть функция обратного вызова?

 $.ajax({
          type:"GET",
          url:"http://hostname/list_devices.php",
          crossDomain:true,
          dataType:'jsonp',
          success: function jsondata(data)
               {
                var jsondata=JSON.parse(JSON.stringify(data));
                var datap=jsondata["Status"];
                     alert(datap);
               }

        });

    or try JSON.parse(JSON.stringify(ajax.response));
  • 0
    как может быть предупреждение, когда оно не анализируется?
  • 0
    Я прошел через ту же проблему, он отображает [объект объекта], но не данные.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню