0

次のコードは、FF と Chrome でうまく機能します。フォームは Ajax 経由で投稿され、モーダル ウィンドウが表示されます。IE9 では、モーダル ウィンドウは表示されますが、フォームは投稿されません。

Javascript:

$(document).ready(function() {
$(document).ajaxStart(function(){
    $('#thanks').modal();
});

$('.ajaxform').submit(function () {
    $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        dataType: 'html',
        data: $(this).serialize(),
        success: function (data) {},
        error: function () { }
    });
    return false;
});

});

HTML:

<form method="post" action="https://www.example.com/post.php" class="ajaxform">
<label>First name*</label>
                    <input type="text" name="fname" required>

                    <label>Last name*</label>
                    <input type="text" name="lname" required>

                    <label>Email address*</label>
                    <input type="email" name="email" required>

                    <label>Phone number*</label>
                    <input type="tel" name="phone" required>
<input class="btn btn-primary" type="submit" value="Submit Request" role="button" href="#thanks">
4

2 に答える 2

1

サブミット イベント ハンドラが実際に IE で呼び出されているかどうかを確認していただけますか。私が尋ねている理由は、jQuery .submit()のドキュメントに次のように記載されているためです。

「JavaScript 送信イベントは Internet Explorer ではバブリングしません。ただし、送信イベントによるイベント委譲に依存するスクリプトは、イベントの動作を正規化した jQuery 1.4 の時点でブラウザー間で一貫して動作します。」

したがって、使用しているjQueryのバージョンによっては、これが問題になる可能性があります...また、Fiddlerまたはコンソールを使用して、Ajax呼び出しが実際にブラウザーを離れているかどうかを確認すると、ヒントが得られる場合があります。

乾杯、アレックス

于 2013-02-25T21:13:58.157 に答える
0

あなたのajax呼び出しがこれを実際の投稿にする場所がわかりません。get の場合は、IE でキャッシュを無効にする必要がある場合があります。jQuery ajax 呼び出しには、そのための設定がありますcache: false

$('.ajaxform').submit(function () {
    $.ajax({
        cache: false,
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        dataType: 'html',
        data: $(this).serialize(),
        success: function (data) {},
        error: function () { }
    });
    return false;
});
于 2013-02-25T15:53:00.843 に答える