2017-02-08 85 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); 
      } 
相關問題