Я не могу преобразовать ответ 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;
?>
[object Object]
- это строковое представление объекта, когда вы видите это в предупреждении, что синтаксический анализ был успешным.
Используйте console.log(me);
для просмотра содержимого объекта
<edit/>
:Похоже, вы хотите вернуть массив результатов и перебрать этот массив для печати данных.
В настоящее время вы возвращаете объект, вы должны заполнить массив этим объектом (или несколькими объектами при необходимости):
<?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);
Это связано с тем, что ваши данные не обрабатываются. Попробуйте следующий код. У вас есть функция обратного вызова?
$.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));
me.imei
для меня содержит пустую строку{"0":"","imei":""}
... нет чисел