jQuery $ .post()+ IE8

时间:2011-07-27 13:29:34

标签: jquery internet-explorer-8 .post

<script type="text/javascript" src="/scripts/jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="/scripts/jquery.form.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){
$("#SendReply").click(function(){                                      
    $(".error").hide();
    var hasError = false;
    var pathname = window.location.pathname;
    var random = Math.random();

    var messageVal = $("#InquiryResponse").val();
    if(messageVal == 'Type your response in this space ...') {
        $("#InquiryResponse").after('<span class="error"><br><br><font color="red">You forgot to type your response to the inquiry. Please type it in the above space and submit again.</font><br></span>');
        hasError = true;
    }


    if(hasError == false) {
        $(this).hide();
        if (jQuery.browser.msie != true) {
        $.post( "",
            { Detail: messageVal},
                function(data) {
                    //alert("For non IE");
                    $("#InqRespForm").slideUp("slow", function() {                 
                         $("#InqRespForm").before('<h1>Success</h1><p><font color="green">Your message has been sent.</font></p>');                             

                });
        });
        }
        if (jQuery.browser.msie == true) {
            jQuery.ajaxSetup({async:false});

            $.post( pathname , { Detail: messageVal},function(data)
                {

                    $("#InqRespForm").width($("#InqRespForm").parent().width()).slideUp("slow");
                    $("#InqRespForm").before('<h1>Success</h1><p><font color="green">Your message has been sent.</font></p>');                  
                });
            jQuery.ajaxSetup({async:true});         
        }   


    }

    return false;
});                        
});
</script> 





<form action="" method="post" id="InqRespForm" name=InqRespForm>
Reply to the above Inquiry : <br/>
<textarea rows="7" name="Detail" id="InquiryResponse" cols="60" colspan=2>Type your     response in this space ...</textarea>
<br/>

<input id="SendReply" name="Send" type="submit" value="Send Response" alt="Reply to  Inquiry" /> 

</form>

在表单提交上,我发送了一封电子邮件。这适用于FF,Chrome等。但我已经秃头试图在IE8中使这项工作。如果你能给我一个解决方案,我会给你买啤酒。

4 个答案:

答案 0 :(得分:1)

我明白了。我将在这里发布解决方案,以防将来帮助某人。问题在于我发布的网址。我的网址是一个参数化网址,我一直使用错误的语法/格式。实际上并不需要IE和非IE分离。答案在于提取当前url的各种组件,并通过“data”数组将其传递给$ .post。感谢您的投入。下面的工作代码:

<script type="text/javascript" src="/scripts/jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="/scripts/jquery.form.js"></script> 
<script type="text/javascript" src="/scripts/jquery.url.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
$("#SendReply").click(function(){                                      

    $(".error").hide();
    var hasError = false;
    var pathname = window.location.pathname;
    var random = Math.random();
    var kar_ = $.url.param("kar"); 
    var obj_ = $.url.param("obj");
    var me_ = $.url.param("me");


    var messageVal = $("#InquiryResponse").val();


if(messageVal == 'Type your response in this space ...') {
    $("#InquiryResponse").after('<span class="error"><br><br><font color="red">You forgot to type your response to the inquiry. Please type it in the above space and submit again.</font><br></span>');
    hasError = true;
}


if(hasError == false) {
    $(this).hide();

    $.post( "inqdetails.asp",
        { Detail: messageVal, kar: kar_, obj: obj_, me: me_},
            function(data) {

                $("#InqRespForm").slideUp("slow", function() {                 
                     $("#InqRespForm").before('<h1>Success</h1><p><font color="green">Your message has been sent.</font></p>');                             

            });
    });

}

return false;
});                        
});
</script> 

答案 1 :(得分:0)

你为什么这样做:jQuery.browser.msie ????

几乎没有理由检测到浏览器!我在代码中绝对看不到需要知道浏览器的内容。

答案 2 :(得分:0)

将此行放在您的HTML中&lt; head&gt;之后标签开始

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

它适用于IE8 +

答案 3 :(得分:0)

$.post( "", ... )可能是造成此问题的原因。我发现它可以在除IE之外的大多数浏览器中使用。

相反,使用$.post(window.location, ... )发布到同一页面。