1

JSONを使用してJQueryのオートコンプリートウィジェットを使用してdb情報を解析していますが、機能しません。私のような質問はたくさんありますが、解決策を見つけることができませんでした。JSON が解析された私の php ファイルは次のとおりです。

このエラーは、ブラウザ コンソールの php の最初の行に表示されます。

Uncaught SyntaxError: Unexpected token <

phpファイルpeliculas.php

<?php

    function makeSqlConnection()
    {
        $SERVIDOR_MYSQL = "localhost";
        $BASE_DATOS = "db";
        $USUARIO_MYSQL = "root";
        $PASSWORD_MYSQL = "";

        $con = mysql_connect($SERVIDOR_MYSQL,$USUARIO_MYSQL,$PASSWORD_MYSQL) or die(mysql_error()); 
        mysql_select_db($BASE_DATOS,$con) or die(mysql_error());
        return $con;
    }

    function disconnectSqlConnection($con)
    {
        mysql_close($con);
    }

    $con = makeSqlConnection();

    $term = trim(strip_tags($_GET['term']));
    $result = mysql_query("SELECT PYS_STR, PYS_TITULO FROM pys WHERE PYS_STR LIKE '%".$term."%';", $con);

    $informacion = array();

    while($row = mysql_fetch_assoc($result))
    {
        array_push($informacion, array('label' => $row['PYS_TITULO'], 'value' => $row['PYS_STR']));
    }

    echo json_encode($informacion);
?>

JSON はこれを返します。 [{"label":"Reservoir Dogs","value":"reservoirdogs"},{"label":"Machete","value":"machete"},{"label":"Wall Street","value":"wallstreet"},{"label":"Django Desencadenado","value":"djangodesencadenado"},{"label":"The Wire","value":"thewire"},{"label":"This Is England '88","value":"thisisengland88"}]

これは私のスクリプトです:

$(function() {    
        $( "#peliculas" ).autocomplete({
            source: function( request, response ) {
                $.ajax({
                    url: "/bundles/pys/php/peliculas.php",
                    dataType: "json",
                    data: {terms: request.term},
                    success: function( data ) {
                        response( $.map( data, function( item ) {
                            return {
                                label: item.label,
                                value: item.value
                            }
                        }));
                    }
                });
            },
            minLength: 2,
            select: function( event, ui ) {
                log( ui.item ?
                    "Selected: " + ui.item.label :
                    "Nothing selected, input was " + this.value);
            },
            open: function() {
                $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
            },
            close: function() {
                $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
            }
        });
    });

これは私のhtmlコードです:

<div class="ui-widget">
  <label for="peliculas">Peliculas: </label>
  <input id="peliculas" />
</div>

<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
  Result:
  <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>

解決

エラーを解決しました。問題はpeliculas.php;の場所にありました。Symfony2 は、この php ファイルをディレクトリ内の js ファイルのように検出していました/resource/public/js。php ファイルを新しいディレクトリに変更urlし、スクリプトのパラメーターを更新したところ、問題なく動作しました。

2 番目の問題はdataパラメーターにありました。

data: {terms: request.term},フィルタリングに置き換えたときtermstermうまくいきました。

4

2 に答える 2

0

2 つの確認事項:

1) ファイルに Unicode 署名 (BOM) が自動的に挿入されるかどうか、エディターを確認してください。 http://www.w3.org/International/questions/qa-byte-order-mark#detect

php ファイルの先頭に BOM (byte-order-mark) 文字が含まれてpeliculas.phpいると、出力に問題が生じることがあります。

BOM を削除する設定が見つからない場合の簡単な修正: コピー - php ファイルのすべての内容をnotepad++の空のファイルに貼り付け、ファイルを UTF-8 として保存します (notepad++ は BOM を書き込みません)。

2) json_encode の前に application/json ヘッダーを追加します

header('Content-Type: application/json');
echo json_encode($informacion);
于 2013-07-13T12:47:14.260 に答える