这个Ajax代码有什么问题

时间:2011-08-16 13:46:56

标签: php javascript ajax internet-explorer

这个javascript代码在chrome和IE中运行没有问题但是在firefox中有问题,我需要知道什么是错的?

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

4 个答案:

答案 0 :(得分:1)

你的检查不正确应该是

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

答案 1 :(得分:0)

您的代码在语法上是不正确的。

  • 代码中的任何位置都没有插入分号(即;),这意味着您将获得意外结果。您应该在JavaScript的每一行末尾添加一个分号。
  • 开口大括号必须在同一条线上,而不是在下一行。
  • 对于比较运算符,请使用Identity / strict equality(即==)运算符代替相等运算符(即===),以避免在比较中进行类型转换。

在继续之前修复这些错误。

答案 2 :(得分: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>

答案 3 :(得分:0)

这段代码需要一些重要的爱。您的整个粘贴块中没有单个分号,并且JavaScript解析器会自动将这些分号添加到行尾,这意味着每个没有左括号的行(没有一行)将被终止。 / p>

  1. 以分号结束陈述
  2. 正确缩进代码
  3. 将您的开口括号放在正确的行上
  4. 如果仍有问题,请重新发布(或编辑)
  5. :)