页面更改时,ajax调用停止



我有一个表单,它需要能够从英语到西班牙语来回切换。为此,我使用<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调用。我不知道为什么第一次它会起作用,但点击语言链接后就不行了。此外,在页面刷新后,它会重新开始工作。

在javascript中键入?

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

最新更新