1

私はフォームを持っており、英語からスペイン語に切り替えることができる必要があります。これを行うには、を使用してい <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 呼び出しを行います。

私が使用するすべてのブラウザ(サファリ、クローム、ファイアフォックス)でこれは機能します。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 呼び出しを停止します。初めて機能する理由はわかりませんが、言語リンクをクリックした後では機能しません。また、ページを更新すると、再び機能し始めます。

4

1 に答える 1

0

JavaScriptのタイプミス?

            if(result =='Valid' || result == 'V&acute;lido)
                                                          ^-- missing '
于 2012-10-12T18:57:23.943 に答える