1

こんにちはstackoverflow開発者、最初に、解決策が見つからなかったら申し訳ありませんが、しばらく試してみました。私のアプローチが最適かどうかはわかりません。AJAX や JSON に代わるものがあれば、遠慮なく提案してください。

登録ユーザーが地域や州に応じてリゾート、レストラン、観光スポットを掲載する観光ガイド Web サイトを作成しています。私はJoomlaを使用しています!これには Seblod (いくつかのカスタム PHP、MySQL、Javascript、および AJAX を使用)。手動で 27 の動的な選択を作成したくないので、PHP/AJAX/JSON/JQuery を使用して、登録されているビーチ (リゾートや観光スポットに関連する必要がある) のリストを選択しようとしています。

ビーチ リストの作成以外はすべて機能しますが、何が問題なのかわかりません。オプションを追加、作成、または追加する方法を複数試しましたが、何も起こりません。PHP/JSON の結果は次のとおりです。

`
    [{"id":"17","title":"ポルト+デ+ガリーニャス"},{"id":"18","title":"セランビ"},{"id":"19", "タイトル":"タマンダー%E9"}]

`

これは、次の PHP スクリプトの結果です。

`

    if($_GET['q'] == 'ビーチ'){
        $praiaSQL = sprintf("SELECT * FROM vp_content AS c LEFT JOIN vp_cck_store_item_content AS v ON c.id = v.id WHERE c.catid = 10 AND v.cck = 'praia' AND v.venue_state = '%s' ORDER BY c.title ASC;", $_GET['s']);
        $query = mysqli_query($connection, $praiaSQL);
        $プライア = 配列();
        while($results = mysqli_fetch_assoc($query)){
            array_push($praia, array('id' => $results['id'], 'title' => urlencode($results['title'])));
        }
        echo json_encode($プライア);
    }

`

アクセント付きの文字を処理するためのソリューションも必要です。ここで urlencode を試し、JQuery でデコードしようとしていますが、問題になる可能性があります。元のデータのままにすると、アクセント付きの文字がある場合、結果項目が空になりました。

これは、結果を処理する関連する JQuery です (ここで、x = 選択、u = AJAX JSON 結果を取得するための URL - コードのどこに問題があるかをコメントしました):

`

    関数 setBeachList(x,u){
            var theDiv = "#cck1r_" + x;
            var theSelect = "#" + x;
            $j(theSelect).children("option:not(:first)").remove();

            $j.ajax({
                url: う、
                contentType: "application/json;charset=UTF-8",
                成功: 関数(データ){
                    if(データ.長さ){
                         /****
                           確認する方法が見つからないため、ここで行き詰まっています。
                           データは実際に処理/処理されています。
                           アラートやその他のあらゆる種類のオプションを試して、
                           選択する。
                           before: および after: 関数があるため、呼び出されていることはわかっています
                           作業しています。
                         *****/
                        /*
                        $j.each(データ、関数(k、v){
                            var o = 新しいオプション();
                            var newTitle = urldecode(v.title);
                            $j(o).html(newTitle).val(v.id);
                            $j(theSelect).append(o);
                        });
                        */
                        var htm = '';
                        for (var i = 0; i '+urldecode(data[i].title)+'';
                        }

                        $j(theSelect).html(htm);
                    }
                }、
                beforeSend: 関数(){
                    $j(theDiv).hide();
                }、
                完全:関数(){
                  $j(theDiv).show();  
                }、
                データ型: 'json',
            });
        }

`

時間と忍耐をありがとう、私はこれの専門家ではありません (正確には初心者ではありませんが、近い...)。

4

3 に答える 3

2

urldecodedecodeURIComponentはjavascript関数ではないため、代わりに使用できます。

あなたがそれを変えるときそれは働いています、

http://jsfiddle.net/MzMPK/1/

アップデート:

あなたの問題はアクセント付き文字をエンコードしようとすることだと思います。すべてのエンコードがUTF-8として設定されている場合は、それらをエンコードしなくても機能するはずです。

于 2012-04-22T14:07:29.060 に答える
1

これは一般的な JSON 解析のサイレント エラーです。

JSON が適切にフォーマットされていない場合、ajax リクエストは暗黙のうちに失敗します。

この問題の 2 番目に多い原因はエンコーディングです。AJAX を呼び出しているページと、データを返すスクリプトで UTF-8 を使用していることを確認してください。

アクセント付きデータの問題は、サーバー側でデータをエンコードしないことで解決できるため、クライアント側でエンコードを解除する必要はありません。

于 2012-04-22T15:17:53.393 に答える
0

私自身の質問に答えるために:私はAJAX / JSONの専門家ではないので、それが期待される動作であるかどうかはわかりませんが、AJAX結果を生成する応答ページは期待されるものと異なるデータを持つことはできません。リージョンの出力を残していたので、要求しているページはどういうわけかそれを処理するのに問題がありました。不要なデータを削除すると、選択リストが正常に更新されました。

これは、ページに複数の結果が含まれていても問題ないと思ったため、投稿で言及するのを忘れていました。Firebugを使用してコードをチェックすると、リクエストは正常に処理されていました。

お時間をいただき、誠にありがとうございました。ご不便をおかけして申し訳ございません。

すべてのファイルに明示的にUTF-8がありますが、アクセントがnullを返したため、応答ページにhtmlentitiesを追加する必要がありました...

于 2012-04-23T04:19:30.927 に答える