2017-02-08 52 views
0

当我执行一个功能,“警报”的数据从一个JSON一个奇怪的事情正在发生。如果我指定,像alert(data.name);,“警报”返回“未定义”,但如果我只是把alert(data);,它返回类似{"id":"1","name":"Erluan"}为什么选择jQuery AJAX。返回值是不确定的?

对象这是接收ID在数据库搜索功能

function receiveUser(val){ 
      $.ajax({ 
       type:"POST", 
       url:"../json/userperm/userGrid.php", 
       data: 'iduser='+val, 
       datatype:"json", 
       success: function(data, string, jqXHR){ 
        alert(data.name); 
       } 
      }); 
} 

这是userGrid.php

<?php 
include('../../config.php'); 

$user = mysql_query("SELECT * from hospital_".$_SESSION['template'].".users where id = ".$_POST['iduser']." order by name"); 

$results = array(); 

while($row = mysql_fetch_array($user)) 
{ 
    $results[] = array(
     'id' => $row['id'], 
     'name' => $row['name'] 
    ); 
} 

$json = json_encode($results); 

echo $json; 
?> 

谢谢。

+3

由于返回的数据类型是JSON的OP不应该使用JSON.parse @JonathanNewton –

+4

$结果是数组的数组... json_encode之后会对象数组。 所以,在JS中,你需要通过循环来读取它。 在当前的情况下,你可以尝试数据[0] .NAME它会工作。 – Naincy

+0

@JonathanNewton jQuery的应该已经被解析时返回 – mhodges

回答

0

Returning JSON from a PHP Script

你的PHP脚本需要正确的标题:

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

似乎jQuery是intrepteing结果作为字符串{ “ID”: “1”, “名”: “Erluan” },通过拥有正确的头文件,它应该被解析为JSON。

+0

也在你的Ajax请求应该是“数据类型”不是“数据类型”,改变这将也解决了该问题。 –

+0

谢谢。我在“echo $ json之后”它工作。 – Erluan

+0

谢谢。你的工作也是如此。 – Erluan

0

您是否尝试过评估Ajax响应? 如果不是,则尝试调用eval函数,然后获取值。

success: function(data, string, jqXHR){ 
       var res = eval('(' + data+ ')'); 
       alert(res.name); 
      } 
相关问题