0

したがって、AJAXを使用してデータベースから行をフェッチし、それらを変数識別子を持つ配列に変換しています。コードPHPは次のとおりです。

 $query_val = $_GET["val"];
  $result = mysql_query("SELECT * FROM eventos_main WHERE nome_evento LIKE '%$query_val%' OR local_evento LIKE '%$query_val%' OR descricao_evento LIKE '%$query_val%'");
  for($i=0;$i<mysql_num_rows($result);$i++){
    $array = array();
    $array[$query_val] = mysql_fetch_row($result);       //fetch result 
    echo json_encode($array);
  }

これがjavascriptです:

$('#s_query').keyup(function(){
        var nome = document.getElementById('s_query').value;
        $.ajax({                                      
            url: 'search.php',        
            data: '&val='+nome,
            dataType: 'json',     
            success: function(data)
        {
            console.log(nome);
            var image_loc = data.nome[7];
            console.log(image_loc);

var image_loc = data.nome[7];を変更すると、var image_loc = data.nidst[7];完全に機能します。Nidstは私が検索する用語です。このコードはエラーを返します:「UncaughtTypeError:Undefinedのプロパティ「7」を読み取ることができません」。私は何をすべきか?

4

3 に答える 3

3

data.nome[7];は存在しないdatanamedのプロパティにアクセスしようとしています。nome目的のプロパティ名を保持する変数を宣言したので、をプロパティ名としてnome参照する必要があります。data[nome][7]

例:の場合var nome = 'foo'、はと同じであるdata[nome][7]と評価されます。data['foo'][7]data.foo[7]

あなたがしていることdata.nome[7]は、と同じdata['nome'][7]であり、機能する唯一の方法は、の場合var nome = 'nome'です。

于 2013-01-21T19:28:29.923 に答える
1

使用する:

var image_loc = data[nome][7];
于 2013-01-21T19:21:59.017 に答える
0

もう1つの問題は、サーバーが有効なjsonデータと共鳴しないことです。コードを変更してみてください:

$array = array();
for ($i = 0; $i < mysql_num_rows($result); $i++) {
    $array[$query_val] = mysql_fetch_row($result);
}
die(json_encode($array));
于 2013-01-21T19:28:08.213 に答える