我有一个表格,它需要能够从英语到西班牙语来回切换。为此,我正在使用 <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´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ódigo no vá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álido';
}
}
正如我所说,它适用于所有浏览器,并且在初始加载时使用 IE,但如果我更改语言(表单以正确的语言加载,并且调用函数,但它看起来不像发生 ajax 调用)。我遗漏了一些不相关的代码,只是这个不起作用。
经过多一点测试后编辑:它停止进行 $.ajax 调用。我不知道为什么它第一次会起作用,但在单击语言链接后就不行了。此外,在页面刷新后,它会再次开始工作。