jQuery $.post() + IE8

匿名 (未验证) 提交于 2019-12-03 02:35:01

问题:

<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> 

On form submit, I send an email out. Which works on FF, Chrome etc. But I've gone bald trying to make this work in IE8. I will buy you beer if you can point me to a solution.

回答1:

I figured it out. Im going to post the solution here in case it helps someone in future. The problem was with the url i was posting to. My url was a parameterised url and I was using a wrong syntax/format all along. The IE and non IE separation is not really needed. The answer lies in extracting the various components of the current url and pass it in $.post via the "data" array. Thanks for your inputs. Working code below:

<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>  


回答2:

Why are you doing this: jQuery.browser.msie ????

There is almost never a reason to detect the browser! And I can see absolutely nothing in your code that requires knowing what the browser is.



回答3:

Put this line within your HTML just after the <head> tag starts

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

It will work for IE8+



文章来源: jQuery $.post() + IE8
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!