15

jQueryの$.ajax関数を使用してフォームを送信していますが、これは機能しますが、問題が発生しているのは成功です。これが私のコードです:

$("#form").submit(function () {
        $.ajax({
            type: "POST",
            url: '/login/spam',
            data: formData,
            success: function (dataCheck) {
                if (dataCheck == 'value') {
                     //Do stuff
                }
            }
        });
        return false;
    });

私が抱えている問題は、関数がdataCheckがifと等しくないと言い続けることです。ページを削除すると、期待どおりにが表示されるため、そうなることはわかっています。また、私は以前にほぼ同じコードを使用しましたが、これは機能します。誰かが私にアドバイスをくれませんか?return false;

4

6 に答える 6

19

自分で答えを見つける方法:

デバッグコードを配置して、サーバーから何が得られるかを確認します。

$("#form").submit(function () {
        $.ajax({
            type: "POST",
            url: '/login/spam',
            data: formData,
            success: function (dataCheck) {
                console.log(dataCheck); // <==============================
                if (dataCheck == 'value') {
                     //Do stuff
                }
            }
        });
        return false;
    });

おそらくあなたが思っている以外の形式になるでしょう。

于 2012-04-22T03:18:52.710 に答える
2

デフォルトの動作 (この場合は通常のフォーム送信) を防止したい場合は、preventDefault over を使用しreturn falseます。上記の return false ステートメントに問題がある場合でも、 preventDefault は機能します。

以下のコードは正常に動作するはずです。

$("#form").submit(function(e) {
   e.preventDefault();
    $.ajax({
        type: "POST",
        url: '/login/spam',
        data: formData,
        success: function (dataCheck) {
            if (dataCheck == 'value') {
                 //Do stuff
            }
        }
    });    
});

gdoron が述べたように、console.debug/alert を使用して変数の値を確認します。firebug Net tab / fiddler を使用すると、サーバー ページから取得している応答を理解するのに役立ちます。

于 2012-04-22T03:24:16.857 に答える
0

if(response.indexOf("success")!=-1){ } このメソッドを試してみてください indexOf()

于 2013-10-16T06:53:53.487 に答える
0

遅いかもしれませんが、今日同じ問題が発生していました。問題は、正しい文字列が成功に返されたことでしたが、何らかの理由でその前に余分な改行文字がありました。ローカルではこれは起こりませんでしたが、オンラインにすると、返される文字列に常に改行が追加されました(あなたの場合はdataCheck)。最後に substr() 関数を使用して改行を削除したところ、それ以降は正常に機能しました。

于 2013-09-11T11:56:43.510 に答える
0

それは奇妙です。私のアドバイスは、xhr の応答を確認するために、firefox で firebug を使用するか、他の何か (たとえば、chrome の開発ツール) を使用できるということです。

そして、間違ったタイプの xhr 応答 (例: html タグ付きの '749afa42e6621f10bae17ee00cb1f4de' エンベロープ) または一部のスペースがトリミングされていないことが原因で、間違った結果が生じる可能性があると思います。

それがあなたを助けるかもしれません:)

于 2012-04-22T03:25:59.273 に答える