2

php変数をJavaScriptに渡したい。データベースから質問を(ランダムに1つずつ)取得する必要があり、エンドユーザーが正しく応答した場合、プログラムは別のことを実行しています。

データベース

+------+-----------------------+---------------+-----------------+
| q_id | description           | text          | answer          |
+------+-----------------------+---------------+-----------------+
|    1 |What is the capital    | United States | Washington D.C. |
|    2 |What is the capital    | California    | Sacramento      |
|    3 |What is the capital    | Maryland      | Annapolis       |
+------+-----------------------+---------------+-----------------+

phpファイルでは、変数$question$correctAnswerの値は次のとおりです。

phpコード:

$sql="SELECT description, text, answer  FROM Questions";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
   $question=$row['description']."of ".$row['text']."?";
   echo($question);
   $correctAnswer=$row['answer'];
   //echo($correctAnswer);
} 

javascriptコード:

var rightAnswer;
function takeQuestion()
{
    var xmlhttp;    
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
           document.getElementById("question").innerHTML=xmlhttp.responseText;
           rightAnswer ='<?php echo $correctAnswer;?>';
           alert(rightAnswer); 
        }
    }
    xmlhttp.open("GET","getQuestion.php",true);
    xmlhttp.send();
 }

プログラムはランダムに質問を出力していますが、変数 $correctAnswerをJavascriptに渡すのに問題があります。rightAnswerJavasScriptの変数は、php変数の値を取る必要があります$correctAnswer。どんな助けでもありがたいです。前もって感謝します!

4

3 に答える 3

2

PHPのwhileループでこれを行います

$question=$row['description']."of ".$row['text']."?|".$row['answer'];
echo($question);

Javaスクリプトで

if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        var elements = xmlhttp.responseText.split("|");
       document.getElementById("question").innerHTML=elements[0];
       var rightAnswer = elements[1];
       alert(rightAnswer); 
    }

これはアイデアです。好きなように変更してください。

于 2012-11-11T17:06:34.893 に答える
1

JavaScriptを次のように変更します。

それをresponseXmlと呼びます:

<script type="text/javascript">
var rightAnswer;
function takeQuestion()
{
    var xmlhttp;    
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
           xmlDoc=xmlhttp.responseXML; 
           document.getElementById("question").innerHTML=xmlDoc.getElementsByTagName('question')[0].firstChild.nodeValue;
           rightAnswer =xmlDoc.getElementsByTagName('answer')[0].firstChild.nodeValue;
           alert(rightAnswer); 
        }
    }
    xmlhttp.open("GET","getQuestion.php",true);
    xmlhttp.send();
 }

 </script>

phpファイルを次のように変更します。

<?php
 header('Content-Type: text/xml');
 header ('Cache-Control: no-cache');
 header ('Cache-Control: no-store' , false);     // false => this header not override the previous similar header

$sql="SELECT description, text, answer  FROM Questions";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
   $question=$row['description']."of ".$row['text']."?";
   //echo($question);
   $correctAnswer=$row['answer'];
   //echo($correctAnswer);
} 


$xmlStr='<?xml version="1.0" encoding="UTF-8"?>
<data>
   <question>'.$question.'</question>
   <answer>'.$correctAnswer.'</answer>
</data>
';
echo $xmlStr;
?>
于 2012-11-11T17:18:53.020 に答える
0

同じページにJavascriptとPHPがある場合、json_encodeを使用してデータをjavascriptに渡すことができます。

<?php
$var = 'hello';
?>
<script type="text/javascript">
var v = <?= json_encode($var); ?>;
</script>

引用符なし

ajax呼び出しを行う場合、変数はPHPを介して渡されるのではなく、httpリクエストとして渡されます。その場合はプレーンJSを使用します

于 2012-11-11T17:02:21.330 に答える