繁体   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