簡體   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