0

newsletter-signup.htmlファイルに接続し、返さdataれた変数で文字列「form-success」を検索するこのAJAXリクエストがあります。この文字列は、ステートメント内の(Django)テンプレートを介して適用され、フォームが成功したことを示します。if

データ全体を検索するスニペットは次のとおりです。

if (data.indexOf('form-success') > 0) {

このデータを検索するより速い方法はありますか?または、返されたデータが正常にサインアップされたかどうかを判断するためのより良い方法はありますか?

よろしくお願いします。完全なコードは次のとおりです。

    $.ajax({ url: '/newsletter-signup', type: 'GET', data: {email: emailVal},  async: false,
        success: function(data){
            // Returning 'form-success' in our data string indicates the sign up worked
            if (data.indexOf('form-success') > 0) {
                // open the success message in a modal window
                happyModal.open({ content: thankYouContent });
            } else {
                // if not successful re-load the contents, firing our standard error message
                theBtn.removeClass('disabled');
                $('.login-panel').load('/newsletter-signup','email=' + encodeURIComponent(emailVal), function () {
                });
            }
        }
    });
4

1 に答える 1

1

data.indexOf通話中に目に見える遅延が発生しているのではないかと思います。あなたが認識している遅延は、おそらくajax呼び出し自体であり、ネットワーク上でかかるのと同じくらい時間がかかります。それをスピードアップするためにコードでできることは何もありません。

また、を使用して通話を行っています。async: falseこれは、ほとんどの場合、通話の進行中にブラウザをロックしていることを意味します。これは、快適なユーザーエクスペリエンスにつながることはなく、おそらく遅延を強調します。代わりに、ある種の「一瞬」の表示でリクエストを非同期にすることを強くお勧めします。ユーザーが待機中に他のタブを使用できるようにするなどです。

(補足:async: falsejQuery 2.0では廃止されることに注意してください。)

于 2012-11-06T11:33:22.813 に答える