0

私はしばらくの間グーグルでSOを調べましたが、これを理解できないようです。Imが満たそうとしている唯一の要件は、sqlステートメントの結果を含む適切にフォーマットされたjavascript配列を返すことです。

IE

与えられたクエリ:

SELECT NUMBERS FROM TABLE 

そして結果:

NUMBERS
1
2
3

最終的にはそのような配列を取り戻したいと思います

["1","2","3"]

私がどこで間違っているのか理解するのを手伝ってください

これが私のphpコードです

<?php

$mysqli = new mysqli("local.host.com", "user", "pass", "db");

$sql = "SELECT DISTINCT NAME FROM table";

$result = $mysqli->query($sql);

while($row = $result->fetch_array())
{
    $rows[] = $row['NAME'];
}

echo(json_encode($rows));


$result->close();

/* close connection */
$mysqli->close();
?>

これが私のJavaScriptです:

    function GetCards()
{
    var cardarray = new Array();

    //alert('test');
    $.getJSON('getcardlist.php', function(data)
    {
        for(var i=0;i<data.length;i++)
        {
            cardarray.push(data[i]);
        }

        //return cardarray;

    });

    return cardarray;
}

編集:

もう少し情報があります。jqueryuiのオートコンプリートリストを設定しようとしています。これは、オートコンプリートウィジェットの設定です。

var list = GetCards();


$( "#name" ).autocomplete({
source: list,
minLength: 2

そしてこれは私がクロームコンソールから得ているエラーです

Uncaught TypeError: Cannot read property 'label' of null 
4

2 に答える 2

1

GetCardsは空の配列(オートコンプリートウィジェットに渡したもの)を返し、ウィジェットにTypeError例外をスローさせます。設定された配列を渡すには、オートコンプリートをインスタンス化するコードを成功コールバックに移動します(実際にコンテンツを何らかの方法で変換する必要がない限りgetJSON、ループする必要があるかどうかはわかりません)。data

$.getJSON( 'getcardlist.php', function( data ) {
    $( "#name" ).autocomplete( {
        source: data,
        minLength: 2
    } );
} );

または、データフィードから直接ロードするためにオートコンプリートの省略形を使用することを検討してください(文字列として渡すを参照source)。ただし、このアプローチでは、ユーザーの入力に応じてリストをフィルタリングするために、サーバー側で追加の作業が必要になる場合があります。その動作が必要な場合。

于 2014-01-22T22:26:43.887 に答える
0

$.eachデータを取得するために使用する必要があります

$.getJSON('getcardlist.php', function(data)
{
    $.each(data, function(key, val) {
       cardarray.push(val);
    });
    //return cardarray;
});
于 2013-03-16T04:26:09.423 に答える