0

(FirefoxおよびIE9では機能しません。Chromeでは機能します)

ajaxを削除すると、JQueryの非表示/表示が機能します。解決策はありますか?

<form id="ppform" action="blah.asp" method="post">
<div id="saleload">Blah</div>
<button id="sendbutton">Send</button>
</form>

$(document).ready(function(){

    $('#saleload').hide();

    $('#sendbutton').click(function() {

        $('#saleload').show();

        $.ajax({
            type: "POST",
            url: /blah/blah.asp,
            data: reqBody,
            dataType: "json",
            success:function(data,textStatus){ 

                if (data.redirect) {
                   window.location.href = data.redirect;
                }else{
                    $("#ppform").replaceWith(data.form);
                }
             }
        });
    }); 
});
4

2 に答える 2

3

この行:

$("#ppform").replaceWith(data.form);

フォームの内容全体を Ajax リクエストからのレスポンスに置き換えています。これは、設定したクリック ハンドラーもなくなることを意味します#sendbutton。内に同じ ID の別のボタンがあってもdata.form機能しません。代わりにイベント委任を使用する必要があります。

$(document).ready(function(){
    $('#saleload').hide();
    $(document).on('click', '#sendbutton', function(){
        $('#saleload').show();
        $.ajax({
            type: "POST",
            url: "/blah/blah.asp",
            data: reqBody,
            dataType: "json",
            success:function(data,textStatus){ 
                if (data.redirect) {
                   window.location.href = data.redirect;
                } else {
                    $("#ppform").replaceWith(data.form);
                }
             }
        });
    }); 
});

また、未定義の変数reqBodyをサーバーに投稿しているようで、上で lonesomeday が言ったように、URL の周りに引用符がありませんでした。

于 2012-05-22T23:31:35.003 に答える
1

明らかな理由は、Javascriptにエラーがあり、セクション全体が実行されないことです。コードをすばやく確認すると、次の行が表示されます。

        url: /blah/blah.asp,

文字列は引用符で囲む必要があります。

        url: "/blah/blah.asp",
于 2012-05-22T23:22:55.600 に答える