【问题标题】:Ajax Form Does Not Work With Internet Explorer 8,9Ajax 表单不适用于 Internet Explorer 8,9
【发布时间】:2012-08-23 05:09:14
【问题描述】:

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

任何建议都会有所帮助, 在此先感谢

【问题讨论】:

  • 您遇到什么错误,网址是否为空白,您是否尝试过阻止提交按钮的默认功能?
  • 正如我提到的,PHP 和 AJAX 代码在同一个文件中,因此 url 是空白的(我知道我可以删除它)。我没有收到任何错误,但单击提交按钮什么也没做。
  • 开发者控制台也没有错误显示?
  • &lt;/br&gt; 没有意义。你想要&lt;br&gt; 代替(或者&lt;br /&gt;,如果你还在使用XHTML)

标签: php jquery ajax forms


【解决方案1】:

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

首先,要让 ajaxform 跨浏览器(IE 7+、chrome、firefox)工作,你必须确保你使用的是 ajaxform 的提交方法,即类似这样的东西:

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

第二件事让我很惊讶。 AjaxForm 在任何地方都可以工作,包括 IE 7 和 9,但它不能在 IE 8 上工作。原因是这个,我忘记了 att method=POST。所以,你必须确保你有这样的东西:

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

【讨论】:

    【解决方案2】:

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

    如果您只是想在成功后重新加载页面。打个电话就行了

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

    使用setTimeOut一段时间后显示消息并重新加载窗口

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2015-07-01
      相关资源
      最近更新 更多