0

これに関する多くの質問にもかかわらず、自分の状況で機能するコードが見つからないようです。このコードを実行するたびに、返された目的の JSON ではなく、未定義の変数になってしまいます。

私のAJAXコードは次のとおりです。

$.ajax({
    data: {"serial":account},
    url: 'http://127.0.0.1/MobilePHP/findCustomerName.php',
    dataType: 'json',
    success: function(data){
        window.alert(data);   
    }
});

そして私のPHPコードは次のとおりです。

    <?php
header("Access-Control-Allow-Origin: *");
header('Content-type: application/json');

include 'dbConfig.php';
include 'connectDB.php';

//$account = $_POST['serial'];

$account = 14;


$sth = mysql_query("SELECT customer_name AS Name FROM customer_details  WHERE auto_id = $account ");

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows ['CustomerName'][] = $r;
}
echo json_encode($rows);


include 'closeDB.php';

?>

私のコンソールからのJSONは次のとおりです。

{"CustomerName":[{"Name":"Tullaroan"}]}

コンソールに正しい JSON が返されるように見えるため、これらの変数にアクセスできない理由がよくわかりません。

4

1 に答える 1

1

success関数内にdataは、単一のプロパティを持つオブジェクトがあります: CustomerName. それにアクセスするには、 を使用しますdata.CustomerName。このプロパティ自体は配列であるため、インデックスを使用してその中の要素にアクセスする必要があります。

あなたの例では、配列に単一のオブジェクトがあるため、そのオブジェクトにアクセスするにはdata.CustomerName[0]. そのオブジェクトには単一のプロパティもあります: Name、したがって、実際の名前を取得するには: を実行するとdata.CustomerName[0].Name、「Tullaroan」が返されます。

data次のようにオブジェクトの内訳を視覚化する方が簡単かもしれません:

data = {"CustomerName":[{"Name":"Tullaroan"}]}
data.CustomerName = [{"Name":"Tullaroan"}]
data.CustomerName[0] = {"Name":"Tullaroan"}
data.CustomerName[0].Name = "Tullaroan"
于 2013-02-21T15:11:25.890 に答える