2017-02-08 5 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

戻りデータ型は、OPはJSON.parse @JonathanNewtonに –

+4

$結果を使用する必要はありませんJSONされているので、配列の配列です... json_encodeた後、それはオブジェクトの配列となります。 だから、JSではループを通してそれを読む必要があります。 現在の場合、データ[0] .nameを試すことができます。 – Naincy

+0

@JonathanNewton jQueryのは、すでに – mhodges

答えて

0

Returning JSON from a PHP Script

PHPスクリプトは、正しいヘッダを必要とします:

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

jQueryのは、文字列{ "ID" として結果をintrepteingされるようだ: "1"、 "名": "Erluan" }、正しいヘッダーを持つことでJSONとして解析されます。

+0

はまた、あなたのAjaxリクエストには、これを変更することもの問題を修正しましたでしょう、「データ型」ではなく、「データ型」でなければなりません。 –

+0

ありがとうございます。私は "エコー$ jsonの後に";それが働いた。 – Erluan

+0

ありがとうございます。あなたもまた働きました。 – Erluan

0

ajaxレスポンスを評価しましたか? それ以外の場合は、eval関数を呼び出して値を取得してください。

success: function(data, string, jqXHR){ 
       var res = eval('(' + data+ ')'); 
       alert(res.name); 
      } 
関連する問題