0

ajax を使用してフォームを作成したため、送信後にページが更新されません。Chrome と Firefox では問題なく動作しますが、Internet Explorer を使用しているときに問題が発生します (これまでのところ、8,9 しかチェックしていません)。IE8,9 ではフォームを送信できません。送信ボタンをクリックしてもイベントが発生しません。これが私が使用しているコードです。上司の要求により、PHP と AJAX コードを同じファイルに記述したことを明確にしたいと思います。

if($_POST['isRadial']){
    if(($_POST['redialVal']) && ($_POST['waitVal'])&& ($_POST['userId']) ){
        $redial = $_POST['redialVal'] ;
        $wait = $_POST['waitVal'];
        $userId = $_POST['userId'];
        $error_message = "123Could Not Save Settings, Please Try Again.";
        $success_message ="Settings Were Updated Successfully, Will Be Implemented In 10 Minutes";
        $query = mysql_query("....");
        $getAll = mysql_query("...");
        if(mysql_num_rows($getAll)>0){
            $query = mysql_query("...'");
        }
        if(!$query){
            echo $error_message;
            return false;
        }
        else
            echo $success_message;
        //Update pull_tables
        file_put_contents("....);
    }
    else
        echo "</br>An Error Occured.Please Save Settings Again123.</br>";
}

Ajax コード:

$(function(){
    $('#submitRedialWait').click(function(){
    var redial = $("#redialSettings").val();
    var wait = $("#waitSettings").val();
    //var userData = $("#ui").text();
    var userData=<?php echo $IDuser; ?>;
    $.ajax({
    url: '' , 
    type: 'POST',
    data: {redialVal: redial , waitVal : wait, userId :userData, isRadial:"yes"},
    success: function(result){     
    // $('#RedialWaitResults').text(result) ;
     alert('settings have been saved.');

    }
    });   
    return false;     
    });
});

この問題が発生した原因は何か分かりますか? (既存のIEを除く)

どんな提案も役に立ちます、前もって感謝します

4

2 に答える 2

3

非同期で送信するファイルに対して AjaxForm を使用していたときに、興味深いことが 2 つ見つかりました。

まず、ajaxform をクロス ブラウザー (IE 7 以降、chrome、firefox) で動作させるには、ajaxform の送信メソッドを使用していることを確認する必要があります。つまり、次のようなものです。

$('form').ajaxForm({
  success: ...,
  error: ...
}).submit();

2番目に驚いたこと。AjaxForm は IE 7 と 9 を含むどこでも動作していましたが、IE 8 では動作しませんでした。理由は、att method=POST を忘れていたからです。したがって、次のようなものがあることを確認する必要があります。

<form action="/action.php" method="POST">...
于 2012-11-21T16:10:31.460 に答える
-1

ajax を使用すると、ajax はバックグラウンドで動作します。ajaxリクエストの成功/エラーでやりたいことをしなければなりません。それ自体は何もしません。

成功した後にページをリロードするだけの場合。電話するだけ

document.location.reload(true);またはあなたが望むものは何でも...

また

を使用してしばらくしてからメッセージを表示し、ウィンドウをリロードしますsetTimeOut

setTimeout(function(){document.location.reload(true)},3000);

alert('settings have been saved.');あなたのコードの後に​​。

于 2012-08-28T16:49:58.610 に答える