2

自分のサイトに検索ページがあります。検索は、外部ソースからのいくつかの(最終的にはいくつかの)APIから取得します。検索には最大5秒かかる場合があります。このため、少なくとも読み込み中のgifを使用して検索ページを読み込み、AJAXにデータのプルを開始させて少しずつ表示させたいと思います。( JSを無効にすると検索が機能しないため、これは悪い例ですが、 http: //gamespot.comに似ています)

もちろん、Javascriptをオフにしているユーザーを考慮する必要があるので、彼らの場合は、PHPに検索を任せるだけで、待機に耐える必要があります。

これを実装するための最良の方法は何ですか?を使用する場合<noscript>でも、すべてのユーザーは5秒のPHP部分がロードされるのを待つ必要があります。

JSステータスに応じて、検索フォームでユーザーを別のページに移動させるだけでよいでしょうか。

4

4 に答える 4

1

おそらく、長期間のPHPクエリからの結果をロードするnoscript部分を定義していますか?iframe

JSステータスに応じて、検索フォームでユーザーを別のページに移動させるだけでよいでしょうか。

ユーザーがページにアクセスしてからフォームを送信する場合は、それが絶対に最善の方法です。例えば:

HTML:

<form id='theForm' action='long_search.php'>
....

JavaScript:

hookEvent(document.getElementById('theForm'), 'submit', function(event) {
    event.preventDefault();
    loadAjaxSearchResults();
    return false;
});

...または(IE上で)hookEventを使用する関数はどこにありますか。addEventListenerattachEvent


オフトピックjQueryPrototypeYUIClosure、またはその他hookEventのライブラリを使用すると、このようなものの多くと同様に、より簡単になります。たとえば、jQueryの場合:

$("#theForm").submit(function() {
    $("#resultsTarget").load("ajaxsearch.php", $(this).serialize());
    return false;
});
于 2011-02-19T21:34:46.843 に答える
0

JavaScriptを使用しない場合は、データをサーバーに投稿し、ページで完全なポストバック(更新)を実行する必要があります。古き良き時代のように。;)

于 2011-02-19T21:35:14.520 に答える
0

いいえ、入力フィールドにjsコードを適用します(私が正しく理解している場合はオートコンプリートしますか?)。Javascriptをエクステンダーのように考えてください。jsが無効になっている場合、入力フィールドでオートコンプリートは拡張されません。あなたが言うところに、あなたはいくつかのテキストを置くかもしれません、おい、jsをオンにしてください、さもなければこれは長い検索になります。また、jsがオンの場合は、テキストを非表示にします

于 2011-02-19T21:35:18.457 に答える
0

プログレッシブエンハンスメント:

何よりもまず、PHPバージョンが機能するようにビルドします。これはすべての人がアクセスできます。次に、javascriptを追加して、可能な場合は舞台裏でajaxリクエストを実行し、コンテンツを取得して現在のページを更新します。

この本を、この主題に関するシンプルで素晴らしい読み物として見てください: Bullet Proof Ajax

于 2011-02-19T21:40:04.750 に答える