0

クラス内に数学の問題を返す PHP 関数があります。

public function level1() {

    //level 1 and 2
    //single digit addition and subtraction
    //randomly choose addition or subtraction
    //1 = addtion, 2 - subtraction
    $opperand = rand( 1, 2 );

    //if the problem is a subtraction, the program will keep generating problems if a negative problem is generated
    //if opperand is a subtraction, do generate both numbers while the answer is negative

    if ( $opperand == 2 )
        {
        do {

            //randomly generate first number
            $number1 = rand( 1, 9 );

            //randomly generate second number
            $number2 = rand( 1, 9 );

            //compute the answer
            $answer = $number1 - $number2;

            //change variable to actual opperand
            $opperand = "-";
        } while ( $answer < 0 );
        }
    else
        {//addition problem
        //randomly generate first number
        $number1 = rand( 1, 9 );

        //randomly generate second number
        $number2 = rand( 1, 9 );

        //compute the answer

        $answer = $number1 + $number2;

        //change variable to actual opperand
        $opperand = "+";
        }//end if/else

    return array( $number1 . " " . $opperand . " " . $number2 . " ", $answer );

この関数を ajaxHandler.php から呼び出します (これは ajax から呼び出します)

   $problemData = $MathEngine->level1();
    return $problemData;

PHPは常に配列を返しますが、JavaScriptで結果を配列として操作したり、表示したりする方法がわかりません。これを行う方法はありますか?以前に標準の Get ajax 呼び出しを使用したことがあるので、それは新しいことではありません。ajax 応答テキストを配列として参照しようとすると、(ボタンをクリックしても) 何も取得されないか、「未定義」になります。

           var problemData = ajaxRequest.responseText;

           alert( problemData[0] )
4

4 に答える 4

2
// php - this will produce a json string
echo json_encode(array( $number1 . " " . $opperand . " " . $number2 . " ", $answer ));

// and in javascript - parse json string to javascript object
var problemData = JSON.parse(ajaxRequest.responseText);
于 2012-11-21T22:21:58.720 に答える
1

echo $problemData;返す代わりに試してみてください。あなたが呼び出すときのエラーは何alert( problemData[0] )ですか?ajaxは文字列またはjsonオブジェクトのみをキャプチャするため、これを行う唯一の方法は、この配列を文字列として返し、jsで分割するか、php側でその配列でjson_encodeを使用することです

var data = problemData.split(' ');
alert(data[0]);
于 2012-11-21T22:14:28.087 に答える
1

JSONを使用します。JSON について聞いたことがない場合は、言語/プラットフォーム間でコンテンツをやり取りする簡単な方法です。

PHP スクリプトにこのスニペットを追加して、配列を JSON エンコード テキストとしてエコーします。AJAX リクエストへの応答は、エコーしたものになります。

// End of PHP script
$problemData = $MathEngine->level1();
$tmpOut = '{"bind":'. json_encode(array("problemData" => $problemData)) .'}';
echo $tmpOut;
exit;

Javascipt で、JSON 文字列をデコードします。

// Javascript
var jsonObj=eval("("+ajaxRequest.responseText+")");
var problemData = jsonObj.bind.problemData;
于 2012-11-21T22:31:36.727 に答える
0

json オブジェクトを使用して、javascript(AJAX) から php にデータを送受信できます。json_encode() を使用して、php からデータをエンコードし、html または text の形式で javascript に渡します。次に、javascript は json_decode を呼び出して、データを取得して表示します。

于 2012-11-22T09:56:04.147 に答える