繁体   English   中英

如何在Javascript代码中访问位于外部PHP文件中的PHP变量?

[英]How to access PHP variables located in external PHP file within Javascript code?

我是一名学习型开发人员,正在尝试利用websockets,php和javascript为我使用的Web应用程序创建模块。 但是,我不确定是否可以以我正在使用的方式同时使用这两种语言,因为我对Javascript尚不很了解。

我想做的是获取位于settings.php文件中的两个字符串,获取这些字符串,将这些字符串转换为Javascript字符串,以便我可以将PHP字符串值用作Javascript变量。 我试图按照在线指南进行操作,但到目前为止,浏览器控制台仅显示

WebSocket connection to 'wss://%3C/?php%20echo%20$server_ip%20?%3E:%3C?php%20echo%20$server_port%20?%3E/websocket' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED

遵循与此类似的指南,包括试图通过运气获得理解的指南: https : //www.dyn-web.com/tutorials/php-js/scalar.php

建议该指南类似,但这涉及一个外部Javascript文件而不是一个外部PHP文件。 这是完全不同的。 从外部javascript文件访问PHP var

这是有问题的主要代码,我将在其中使用Javascript访问PHP变量:

    <!--Include some variables from PHP settings file to fetch IP/port-->
    <?php include(ROOT_PATH . '/modules/Webchat/includes/settings.php'); ?>
    <?php echo $server_ip; ?>

    <script type="text/javascript">
        $(document).ready(function(){
            var socket;
            if (!window.WebSocket) {
                window.WebSocket = window.MozWebSocket;
            }
            if (window.WebSocket) {


                var ip = "<?php echo $server_ip ?>";
                var port = "<?php echo $server_port ?>";
                // TODO: Get socketAddress from settings.php


                var socketAddress = ip + (port ? ':' + port : '');


                var nextID = 0;
                var messageCount = 0;

                socket = new WebSocket("wss://" + socketAddress + "/websocket");

这是我的存储PHP变量的settings.php文件:

<?php
$server_ip = $queries->getWhere('mc_servers', array('is_default', '=', 1));
$server_port = 25566;
$endpoint = "/websocket";
?>

我希望server_ip php变量的输出为字符串,例如“ server.example.com”。 我期望server_port的输出为25566。

您可以通过让PHP文件回显变量,然后使用javascript请求并加载它们来解决此问题。

确保可以在服务器上的某个位置访问settings.php并将其放入

<?php
$server_ip = $queries->getWhere('mc_servers', array('is_default', '=', 1));
$server_port = 25566;
$endpoint = "/websocket";
header("Access-Control-Allow-Origin: *");
echo json_encode([$server_ip, $server_port, $endpoint]);
?>

标头可防止发生CORS错误,然后将值编码为JSON。

<script type="text/javascript">
    $(document).ready(function(){
        var socket;
        if (!window.WebSocket) {
            window.WebSocket = window.MozWebSocket;
        }
        if (window.WebSocket) {
            $.getJSON('/modules/Webchat/includes/settings.php') 
              .done(function setvars(data) {
                  server_ip = data[0];
                  server_port = data[1];
                  endpoint = data[2];
              })
              .fail(function (data) {
                  alert('Couldn't get server variables! ')
              });

            var socketAddress = ip + (port ? ':' + port : '');

            var nextID = 0;
            var messageCount = 0;

            socket = new WebSocket("wss://" + socketAddress + "/websocket");
</script>

该代码的作用是使用$.getJSONsettings.php检索编码的变量,然后将其作为负载,然后作为javascript变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM