簡體   English   中英

我無法將PHP變量發送到JavaScript

[英]I can't send PHP variables to JavaScript

我試圖將參數從.php文件發送到Javascript,但是我什至無法發送字符串。

JavaScript片段:

var params = "action=getAlbums";
            var request = new XMLHttpRequest();

            request.open("POST", PHP CODE URL, true);
            request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            request.setRequestHeader("Content-length", params.length);
            request.setRequestHeader("Connection", "close");
            request.send(params);

            request.onreadystatechange = function() {

                   var phpmessage = request.responseText;
                   alert(phpmessage);

            };

PHP片段:

$deviceFunction = $_POST["action"];
if ($deviceFunction == "") $deviceFunction = $_GET["action"];

// Go to a function depending the action required
switch ($deviceFunction)
{
    case "getAlbums":
        getAlbumsFromDB();
        break;
}



function getAlbumsFromDB()
{

    echo "test message!";

}

彈出包含phpmessage的警報,但它為空(實際上出現了兩次)。 如果我這樣做,警報甚至將無法正常工作:

request.onreadystatechange = function() {
                if(request.status == 200) {
                    var phpmessage = request.responseText;
                   alert(phpmessage);
                }

            };

每當狀態更改時,都會調用readystatenchange事件。 有5種狀態,請參見此處: https : //developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#readyState

重寫您的JS:

request.onreadystatechange = function () {
  if (request.readyState == 4) {
    console.log('AJAX finished, got ' + request.status + ' status code');
    console.log('Response text is: ' + request.responseText);
  }
}

在您的代碼中,您僅檢查返回的狀態代碼。 上面的代碼將檢查就緒狀態,然后輸出狀態代碼以進行調試。

我知道這個答案比實際問題的答案更能說明問題,但是我覺得寫一個答案是為了包含格式正確的代碼。

我在使用Django時遇到類似的問題。 我做了什么:我使用模板語言來生成所需的javascript變量。

我不是PHP程序員,但我將為您提供一個主意,如果可以的話讓我現在。 以下不是php代碼,僅用於說明。

<?php
    <script type="text/javascript" ... >
          SOME_VARIABLE = "{0}".format(php_function())  // php_function resolve the value you need
   </script>
?>

我在腳本中使用了SOME_VARIABLE。

在調用open和send方法之前,請指定您的onreadystatechange事件處理程序。 您還應該在請求的GET和POST方法之間進行選擇。

如果僅當請求對象狀態為OK(= 200)並且readyState完成且響應就緒(= 4)時才彈出消息,則可以編寫:

request.onreadystatechange = function() {
    if (request.readyState==4 && request.status==200) {
        var phpMessage = request.responseText;
        alert(phpMessage);
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM