Ajax表单不适用于Internet Explorer 8,9

时间:2012-08-28 16:26:18

标签: php jquery ajax forms

我使用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的现有除外)

任何建议都会有所帮助, 提前致谢

2 个答案:

答案 0 :(得分:3)

当我使用AjaxForm处理异步提交的文件时,我发现了两件有趣的事情。

首先,为了让ajaxform能够跨浏览器工作(IE 7 +,chrome,firefox),你必须确保使用ajaxform的submit方法,例如:

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

第二件事让我感到惊讶。 AjaxForm到处工作,包括IE 7和9,但它不能用于IE 8.原因是这样,我忘了att方法= POST。所以,你必须确保你有这样的东西:

<form action="/action.php" method="POST">...

答案 1 :(得分:-1)

使用ajax时,ajax将在后台运行。你必须在ajax请求成功/错误时做你想做的事情,它不会做任何事情。

如果您只是想在成功后重新加载页面。只需致电

document.location.reload(true);或任何你想要的......

OR

使用setTimeOut

一段时间后显示消息并重新加载窗口
setTimeout(function(){document.location.reload(true)},3000);

在您的代码中alert('settings have been saved.');之后。