2

私の一部のフォームはJavascript/JQueryで送信されるため、ページの更新は行われません。

しかし、2台のコンピューター間のブラウザーの動作がおかしいことに気づきました。1台のコンピューター(およびテストしたすべてのブラウザー)で、フォームの送信が期待どおりに実行されます。私の他のコンピューター(Mac)は、ヒットとミスです。フォームを送信すると、通常のPOST更新が行われます。ブラウザが更新され、URLアドレスバーにボタンのテキストが表示されます。

-繰り返しますが、私のPCのブラウザはこれを行いません。

私が夢中にならない限り、私が推測できるのは、私のMacのブラウザがjavascriptを正しく実行していないということだけです。しかし、コーディング側でエラーが発生する可能性があります。

フォームがJavascriptで送信されていないことを適切に確認していますか?

<form id="norefreshForm">
   <!--more form fields here -->
   <input type="submit" name="button" value="Submit Me" />
</form>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

    $.ajaxSetup({
       global:false,
       cache:false,
       type:"POST",
       url:"<?=$_SERVER['REQUEST_URI'];?>",
       timeout:120000   
    });


    $("form#norefreshForm").submit(function(){

        $.ajax({ success:function(response){ alert("Submitted"); } });
        return false;
    });

});
</script>
4

4 に答える 4

0

e.preventDefault()実際には、代わりに実行する必要のあるブラウザがいくつかありますが、そのreturn false;理由はわかりません。しかし、それは私にたくさん起こりました。だから、あなたはこれを行うことができます:

 $("form#norefreshForm").submit(function(){
        e.preventDefault();//should be at the very top 
        $.ajax({ success:function(response){ alert("Submitted"); } });

    });

});
于 2013-01-09T07:00:56.470 に答える
0

これを試して:

$("form#norefreshForm").submit(function(e){
        $.ajax({ success:function(response){ alert("Submitted"); } });
        e.preventDefault();
});
于 2013-01-09T06:56:03.923 に答える
0

jQueryのみを使用している場合は、falseを返すだけで十分です。(Macの100%確実ではありません)

ただし、純粋なJavaScriptも記述している場合は、preventDefaultまたはを使用する必要がstopPropagationあります。

IEの場合はもっと異なります。時々あなたは使用しなければならないでしょうwindow.event.returnValue = false;

したがって、これらすべての組み合わせで、通常どおりにトリックを実行できます。

したがって、return falseステートメントを次のように置き換えます

if (eventObject.preventDefault) {
    eventObject.preventDefault();
} else if (window.event) /* for ie */ {
    window.event.returnValue = false;
}
return false;

これはPCとMACの両方で機能します

ハッピーコーディング!!!

于 2013-01-09T07:10:42.297 に答える
0

フォームでは、送信ボタンを使用しないようにしてください。代わりに、単純なボタンを使用して、このボタンをクリックするだけでajax呼び出しをバインドできます。

この理由は、送信ボタンと独自のajax関数によって同時に2つのリクエストを行っているようです。

また、フォームのアクション属性を指定していないため、最初の送信は失敗します。

于 2013-01-09T07:15:27.060 に答える