1

jsonを使用してphpからjavascriptに変数を渡す際に問題があります。基本的に問題は、私のjavascriptでresponseTextの項目をデバッグして表示できるが、それらを変数に割り当てたり表示したりできないことです。単一のアイテムですが、なぜこれが起こっているのかについてのアイデアを管理していませんでした。

function ajaxrequestDB() {
    var AJAX = null; // Initialize the AJAX variable.

    if (window.XMLHttpRequest) { // Does this browser have an XMLHttpRequest object?
        AJAX=new XMLHttpRequest(); // Yes -- initialize it.
    } 
    else { // No, try to initialize it IE style
        AJAX=new ActiveXObject("Microsoft.XMLHTTP"); // Wheee, ActiveX, how do we format c: again?
    } // End setup Ajax.

    if (AJAX==null){ // If we couldn't initialize Ajax...
    alert("Your browser doesn't support AJAX."); // Sorry msg.
    return false // Return false, couldn't set up ajax
    }
        AJAX.onreadystatechange = function() { // When the browser has the request info..
            if (AJAX.readyState==4 || AJAX.readyState=="complete") 
            { // see if the complete flag is set.
            callback(AJAX.responseText, AJAX.status); // Pass the response to our processing function
            } // End Ajax readystate check.
        }

    var url='http://localhost/Scripts/refresh.php'; 
    //var url='http://cpdtest.zzl.org/Scripts/hidemarker.php?Name='+myname; 
    AJAX.open("GET", url, true); // Open the url this object was set-up with.
    AJAX.send(); // Send the request.       
    alert(AJAX.responseText);
    var result = AJAX.responseText;

    eval(result);
    //alert(result);
}

上記から、AJAX.responseText でデバッグを行うと、php ファイルから返されたデータを確認できますが、アラート (AJAX.responseText) では空白のアラート ウィンドウしか表示されません。

以下は、dbから読み取り、変数をjavascriptに送信する私のphpファイルでもあります。

<?php
header('Content-type: application/json');
//$con = mysql_connect("localhost","770132_admin","admin");
$con = mysql_connect("localhost","root","");

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("cpd", $con);

$SQL = "SELECT name from markers";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)){

$data[]= $db_field;

}  
echo json_encode($data);

?>
4

2 に答える 2

1

次のコマンドで「true」を設定すると、ajax リクエストが非同期に設定されます。

AJAX.open("GET", URL, true);

これは、AJAX.readyState==4 の場合にのみ ajax 応答が準備できることを意味します。したがって、次のコードを配置する必要があります

    アラート (AJAX.responseText);
    var 結果 = AJAX.responseText;

    eval(結果);

ここに挿入する必要があります:

AJAX.onreadystatechange = function() { // ブラウザにリクエスト情報がある場合..
            if (AJAX.readyState==4 || AJAX.readyState=="完了")
            { // 完了フラグが設定されているかどうかを確認します。
              //あなたのコード//
            callback(AJAX.responseText, AJAX.status); // 応答を処理関数に渡します
            } // Ajax readystate チェックを終了します。
        }
于 2012-08-24T07:53:15.920 に答える
0

次の JavaScript コードを使用してみてください。

function ajaxrequestDB(callback) {
    var AJAX; // Initialize the AJAX variable.
    if (window.XMLHttpRequest) { // Does this browser have an XMLHttpRequest object?
        AJAX=new XMLHttpRequest(); // Yes -- initialize it.
    }
    else if (window.ActiveXObject) { // No, try to initialize it IE style
        AJAX=new ActiveXObject("Microsoft.XMLHTTP"); // Wheee, ActiveX, how do we format c: again?
    } // End setup Ajax.

    if (!AJAX) { // If we couldn't initialize Ajax...
        alert("Your browser doesn't support AJAX."); // Sorry msg.
        return false; // Return false, couldn't set up ajax
    }

    AJAX.onreadystatechange = function() { // When the browser has the request info..
        if (AJAX.readyState==4) { // see if the complete flag is set.
            callback(AJAX.responseText, AJAX.status); // Pass the response to our processing function
        } // End Ajax readystate check.
    }
    var url='http://localhost/Scripts/refresh.php';
    //var url='http://cpdtest.zzl.org/Scripts/hidemarker.php?Name='+"myname";
    AJAX.open("GET", url, true); // Open the url this object was set-up with.
    AJAX.send(null); // Send the request.       
}

function showResult(text, status){
    if(status==200){
        alert(text);
        var result=JSON.parse(text);
        alert(result);
    }
    else alert("HTTP Error:" + status);
}

ajaxrequestDB(showResult);
于 2012-08-24T08:10:38.960 に答える