-1

現在、(サーバー上で)PHPファイルを呼び出すJavascriptファイル(クライアント上で実行)があります。PHPファイルが終了したら、クライアントで実行されているjavascriptに3つの変数を戻したいと思います。javascriptにphpファイルの実行が終了するのを待たせる方法を見つけたので、それは問題ではありません。問題は、変数をjavascriptファイルに戻すことです。これはできますか?私が見たすべての例には、ある種のハイブリッドjavascript/phpファイルがあります。jquery.ajaxのようにphp変数を渡す方法を見つけたいと思っていました。私はJavascriptとPHPにとても慣れていないので、これができるかどうかはわかりません。ありがとう、

javascript:

<html>
    <head>
        <title>Login Page</title>
    </head>
    <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script language="Javascript">
        function calculations(callback)
        {
            var x = <?php echo $username?>;
            alert(x);
            var password = window.prompt("Please Type Your Password");
        }//ends the calculations function
        function getUsername()
        {
            var username = window.prompt('Please Type Your Username');
            var temp = document.getElementById('temp');
            temp.innerHTML = username;
            jQuery.ajax(
                {
                    type: "POST",
                    url:"GetInfo.php",
                    data: "username="+username,
                    success: function(msg)
                            {callback.call();}

                });//ends the jQuery send


        }//ends the GetUsername function
    </script>
    <body onLoad=getUsername()>
        <div id="temp">This will show text</div>

    <body>

</html>

php:

<?
//$username = $_POST['username'];
$username = "tom";
$inFile="MyID.config.php";
$handle=fopen($inFile, 'r') or die ("No credentials could be gotten because the file MyID.config.php would not open.");
$data='0';

do{
$data = fgets($handle);
$temp = substr($data,0, 10);
//echo $temp.strcmp($temp,'\'username\'')."\n";
}while (strcmp($temp, '\'username\'')!= 0);


$data = substr($data,15,strlen($username));

if (strcmp($data, $username == 0) )
{
    $read_in = fgets($handle);
    $x = substr($read_in,8,-3);
    $read_in = fgets($handle);
    $y = substr($read_in,8,-3);
    $read_in = fgets($handle);
    $salt = substr($read_in,11,-3);
}//ends the strcmp $data and $username if statement.
fclose($handle);

?>
4

1 に答える 1

1

スクリプトを呼び出したJavascriptにデータを戻すには、次のようにエコーします。

$value = 'foobar';
echo $value;

複数の値の場合、JSOnオブジェクトとして返すことができます

$name = 'foobar';
$text = 'helloworld';
$value = 5;

//add to associative array

$result['name'] = $name;
$result['text'] = $text;
$result['value'] = $value;

// encode as json and echo
echo json_encode($result);

Javascript側では、コールバック関数はこれを受け取ります。

function callback(data){
    var result = JSON.parse(data);
    //access the members
    console.log(result.name);
    console.log(result.text);
    console.log(result.value);
}
于 2012-04-21T01:55:34.213 に答える