Javascript 为什么使用jqueryajax。返回值未定义?

Javascript 为什么使用jqueryajax。返回值未定义?,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,当我执行一个从json“提醒”数据的函数时,发生了一件奇怪的事情。如果我指定,比如alert(data.name),“警报”返回“未定义”,但如果我只是把警报(数据),它返回像{“id”:“1”,“name”:“Erluan”} 这是接收要在数据库中搜索的id的函数 function receiveUser(val){ $.ajax({ type:"POST", url:"../json/userperm/use

当我执行一个从json“提醒”数据的函数时,发生了一件奇怪的事情。如果我指定,比如
alert(data.name),“警报”返回“未定义”,但如果我只是把
警报(数据)
,它返回像
{“id”:“1”,“name”:“Erluan”}

这是接收要在数据库中搜索的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;
?>

谢谢。

您的php脚本需要正确的标题:

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

JQuery似乎勇敢地将结果表示为字符串{“id”:“1”,“name”:“Erluan”},通过使用正确的头,它应该被解析为JSON。

您尝试过评估ajax响应吗? 如果没有,则尝试调用eval函数,然后获取值

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

由于返回数据类型是json,OP不必使用json.parse@JonathanNewton$results是array of array…在json_编码后,它将是对象数组。所以,在JS中,您需要通过循环来阅读它。在当前情况下,您可以尝试使用数据[0]。命名它将起作用。@JonathanNewton jQuery应该已经在分析任何正在使用的JSONreturned@JayBlanchard是原版的吗comment@Naincy我试过了,它返回“Undefined”:S。在ajax请求中,它应该是“dataType”而不是“dataType”,更改它也可以解决这个问题。