2011-08-16 51 views
-3

这段JavaScript代码运行的错误没有问题在Chrome和IE,但有一个问题,在Firefox,我需要知道什么是错的?如何处理此Ajax代码

<script> 
function checkGurantee() { 
var gurantee = document.getElementById('gurantee_no').value; 
if (gurantee === '') { 
document.getElementById('info').innerHTML = ''; 
return; 
} 
var params = "gurantee_no=" + gurantee; 
request = new ajaxRequest(); 
request.open("POST", "check_gurantee.php", true); 
request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
request.setRequestHeader("Content-length", params.length); 
request.setRequestHeader("Connection", "close"); 
request.onreadystatechange = function() { 
if (this.readyState === 4) { 
if (this.status === 200) { 
if (this.responseText != null) { 
document.getElementById('info').innerHTML = this.responseText; 
} 
else alert("Ajax error: No data received"); 
} 
else alert("Ajax error: " + this.statusText); 
} 
} 
request.send(params); 
} 
function ajaxRequest() { 
try{ 
var request = new XMLHttpRequest(); 
} 
catch(e1) { 
try{ 
request = new ActiveXObject("Msxml2.XMLHTTP"); 
} 
catch(e2) { 
try{ 
request = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
catch(e3) { 
request = false; 
} 
} 
} 
return request; 
} 
</script> 

这是HTML部分:

<section class="form"> 
<form action="javascript:void()" method="POST" class="formstyle1"> 
    <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br /> 
    <input type="text" name="gurantee_no" id="gurantee_no" class="textfield" /> 
    <input type="button" value="جستجو" class="btn" onClick="checkGurantee()" /> 
    <span id='info'></span> 
</form>   
     </section> 
+0

在控制台中的任何错误? – J0HN

+0

你的意思是“但在Firefox和IE中有问题”,你有语法错误吗?执行错误?安全?请尽可能多地提供详细信息。 –

+0

当然,我有语法错误! – user458975

回答

1

你如果检查是不正确的应该是

if (gurantee == '') 
{ 
document.getElementById('info').innerHTML = '' 
return 
} 
+0

感谢花花公子,与IE浏览器的问题解决了,但也有问题,与Firefox !!!! – user458975

+0

成功解决此问题,tnxX – user458975

0

你的代码是语法不正确。

  • 有代码的任何位置插入无分号(即;),这意味着你会得到意想不到的效果。您应该在JavaScript中每行的末尾添加一个分号。
  • 开篇括号必须在同一行上,而不是在下一行。
  • 对于比较运算符,而不是相等(即==),请使用Identity/strict equality(即===)运算符,以避免比较中的类型转换。

继续之前修复这些错误。

+0

添加到@Gaurish所说的内容。每次创建新东西时,都应该使用var关键字。我,e'params =“'应该变成'var params =”'。 –

+0

谢谢,我申请您的所有通知和编辑我的代码,但仍然有问题,可能你再次检查 – user458975

0

我认为这将是更容易使用jQuery这个目的... 使用jQuery你的代码将是这样的:

<script type="text/javascript"> 
    $(function() { 
     $('form').bind('submit', function(event) { 
      var form = $(this), 
       data = form.serializeArray(); 

      $.post(form.attr('action'), data, function(request) { 
       $('#info').html(request); 
      }); 
      return false; 
     }); 
    }); 
</script> 

而且你section

<section class="form"> 
    <form action="check_gurantee.php" class="formstyle1"> 
     <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br /> 
     <input type="text" name="gurantee_no" class="textfield" /> 
     <input type="submit" value="جستجو" class="btn" /> 
     <span id='info'></span> 
    </form> 
</section> 
+0

谢谢,我申请的通知和编辑我的代码,但仍然有问题,可能你再次检查 – user458975

0

此代码需要一些重大的爱情。在整个粘贴块中没有单独的分号,并且JavaScript解析器会自动将这些分号添加到行尾,这意味着每行没有大括号的行(都不会被终止)。

  1. 结束你的语句之间用分号
  2. 正确缩进代码
  3. 把你开括号在合适的线路
  4. 重职(或编辑)如果你还有问题

:)

+0

谢谢,我申请的是你的注意并编辑我的代码但仍然有问题,可否再次检查 – user458975