[英]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>
該代碼的作用是使用$.getJSON
從settings.php
檢索編碼的變量,然后將其作為負載,然后作為javascript變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.