更改页面时,ajax调用会停止

时间:2012-10-12 18:52:00

标签: ajax forms internet-explorer jquery

我有一张表格,它需要能够在英语和西班牙语之间来回切换。为此,我使用<a href ="page.php?lan=SP">。在我的代码中我有:

<?php
if($_GET['lan'] == 'SP'){
     session_start();
     $_SESSION['language'] = $_GET['lan'];
?> (spanish form)
<?php
}else{
    session_start();
    $_SESSION['language'] = 'EN';
     ?> (english form)
} 

在表格中我有一个文本框:

<input name = "PromoCode" type = "text" id = "code" style ="width:250px" onkeyup="PCcheck(this.value)" maxlength="10">

以及一段更新的文字,说明您输入的内容是否为有效代码:

<p name =" " id="PC" style="width:250px"></p>

其中PCcheck(this.value)进行ajax调用以查看它,每次用户在框中单击时,文本框中的值都与数据库中的代码匹配。

在我使用的每个浏览器(safari,chrome,firefox)中都可以使用。 在IE中,它最初完美地工作,但是当我单击链接以更改语言时,表单会加载,但是在文本中绑定调用函数但不更新p标记。我的功能如下:

function PCcheck(pc)
{
    //alert(pc);
   if((/^\s*$/).test(pc))
    {
    }else{
        $.ajax({url:"check.php",
            type:"GET",
            data:'code=' +pc,
            success:function(result)
            {
                if(result =='Valid' || result == 'V&acute;lido')
                {
       document.getElementById("PC").innerHTML = "<font color ='green'>" + result + "</font>";
                }
                else
                {
        document.getElementById("PC").innerHTML = "<font color ='red'>" + result + "</font>";
                }
            }
        });
}

check.php看起来像:

<?php
session_start();
$lan = $_SESSION['language'];
include('../db.php');
$code = $_GET['code'];
    $query = "SELECT * 
               FROM table
             Where Code = '$code'";

        $result = mysql_query($query) or die(mysql_error());

        $row = mysql_fetch_array($result);
        if($row['Code'] == ''){
            if($lan == 'EN'){
                echo("Invalid Code");
            }else{
               echo('C&oacute;digo no v&aacute;lido');
            }
        }
        else if($row['FirstName'] != ''){
            if($lan == 'EN'){
                $response = 'Used on ' . $row['RDate'];
            }else{
                $response = 'Utilizado en ' . $row['RDate'];
            }
            echo($response);
        }
        elseif($row['Date'] < $date){
            if($lan == 'EN'){
                echo('Expired');
            }else{
                echo 'Expirado';
            }
        }
        else{
            if($lan == 'EN'){
                echo('Valid');
            }else{
            echo 'V&aacute;lido';
            }
        }        

正如我所说的,它适用于所有浏览器,IE在初始加载时,但如果我更改语言(表单以正确的语言加载,并且函数被调用,但它看起来不像ajax调用)发生了。)我遗漏了一些不相关的代码,只是这个没有用。

经过多一点测试后编辑: 它停止进行$ .ajax调用。我不知道为什么它会在第一次工作,但不是在点击语言链接后。此外,页面刷新后它会再次开始工作。

1 个答案:

答案 0 :(得分:0)

javascript中的错字?

            if(result =='Valid' || result == 'V&acute;lido)
                                                          ^-- missing '