0

jquery の ajax 関数を使用して、外部の php ファイルからデータを取得しています。php ファイルから返されるデータは、オートコンプリート機能に使用されます。ただし、オートコンプリート関数は、php ファイルの配列から特定の値をそれぞれ提案するのではなく、それらすべてを返します。私のjqueryは次のようになります。

jQuery('input[name=past_team]:radio').click(function(){
            $('#shadow').fadeIn('slow');
            $('#year').fadeIn('slow');

            var year = $('#year').val();

            $('#year').change(function () {
                $('#shadow').val('');

                $.ajax({  
                    type: "POST",  
                    url: "links.php",  
                    data: ({
                        year: year,
                        type: "past_team"
                    }),
                    success: function(data)      
                    {
                        var data = [data];

                        $("#shadow").autocomplete({ 
                            source: data
                        });
                    }
                });
            });
        });

link.php ファイルは次のようになります。

 <?php
session_start();
require_once("functions.php");
connect();

$type = $_POST['type'];
$year = $_POST['year'];

if($type == "past_team")
{
    $funk   =   mysql_query("SELECT * FROM past_season_team_articles WHERE year = '".$year."'")or die(mysql_error());
    $count  =   mysql_num_rows($funk);
    $i      =   0;

    while($row = mysql_fetch_assoc($funk))
    {
        $name[$i]   =   $row['team'];

        $i++;
    }

    $data = "";

    for($i=0;$i<$count;$i++)
    {
        if($i != ($count-1))
        {
            $data .= '"'.$name[$i].'", ';
        } else
        {
            $data .= '"'.$name[$i].'"';
        }
    }

    echo $data;
}
?>

オートコンプリートが機能します。しかし、入力フィールドに何かを入力し始めると、読み込まれる提案は配列全体です。「シカゴ・カブス」「ボストン・レッドソックス」「アトランタ・ブレーブス」……。

4

1 に答える 1

0

つまり、Jsonを使用して、phpスクリプトで出力をレンダリングします。ATMは、「、」を含む単一の配列要素にのみ連結されたjavascriptによって解析されません。私はそれがあなたが望むものだとは思いません。また、必要なデータのデータ構造にも注意してください。

実用的な例については(クライアント側では、リモートJSONPの例http://jqueryui.com/demos/autocomplete/#remote-jsonpを参照してください)

于 2012-05-04T10:23:39.917 に答える