簡體   English   中英

將php變量發送到Javascript變量

[英]Sending php variables to Javascript variables

有沒有辦法做到這一點,不用這樣做: 將javaScript變量發送到php變量

還是我可以做到這一點,然后將我的網址“覆蓋”到原始網址,而不刷新頁面(仍然保留php變量)?

我相信您是不對的-您實際上確實將'javascript'變量獲取到PHP-使用@MikeD下面的jQuery代碼片段(jQuery是一個javascript庫,其中包含許多功能,您可以在代碼中使用這些功能-使事情變少更容易做到),您可以將javascript變量傳遞給PHP頁面。

在php頁面上,您可以使用以下簡單方法將此變量(在客戶端-瀏覽器上發起)分配給PHP變量:

$variable = $_REQUEST['javascriptVariable'];

一個不錯的簡單方法是這樣的:

的PHP

<div id="something" data-info="<?php echo $info ?>"></div>

jQuery的

var info = $("#something").data("info");

說明

使用PHP將變量作為數據屬性放在某個div中,然后使用JQuery從DOM中獲取數據屬性。

您可能希望在將此代碼放到您關心的任何地方之前對其進行很多安全性保護,但是它說明了原理,而又不會在水中投入太多的精力:

<head>
<script>
function loadDiv(url)
{ 
        $('#YourDivID').load(url);
}
</script>
<body>
<?php
$thisID = 1; //set here for demonstrative purposes.  In the code this was stolen from, a MS SQL database provides the data
$thisGroup = "MyGroup";
$thisMembers = "TheMembers";
$thisName = "Just a example";
echo "<button onclick=loadDiv('http://siteonyourdomain.com/yourpage.php?ID=$thisID&group=$thisGroup&members=$thisMembers');>$thisName</button>";    
//note this only works for sites on the same domain.  You cannot load google.com into a div from yoursite.tv
//yourpage.php would have some code like this
// if(isset($_GET['thisID'])) {$myID = $_GET['thisID']} else {$myID = NULL}
?>
<div id="YourDivID">
Before
</div>

<?php 
//I tested this code before posting, then replaced the domain and page name for security's sake

您可以使用PHP創建JavaScript變量有兩點,第一點是在服務器上創建“頁面”時,第二點是在javascript應用程序運行期間(頁面加載后)。 第二點將需要某種客戶端請求(ajax,websocket等)。

最好的方法(以我的經驗)是使用PHP的json擴展名,該擴展名允許您將PHP對象/數組編碼為json序列化的字符串,該字符串可以在瀏覽器中反序列化/解碼為等效的javascript類型。

要在頁面生成期間執行此操作,可以類似執行以下操作:

echo "jsvar = eval('('+".json_encode($phpvar)."+')')";

請注意,評估發生在瀏覽器的客戶端,並且在每個主要的js庫中都很常見。

在您的javascript應用正常運行期間,請求對象的方式會有所不同,具體取決於請求數據的方式,但是每種方式都會涉及異步javascript請求,用於處理請求的PHP腳本(在服務器端),然后是javascript端當在javascript中收到數據作為對請求的響應時調用的處理程序/回調。

我通常使用PHP將json_encode()的字符串作為純文本回顯,然后對javascript側面響應回調進行編碼以解碼響應並觸發事件。 舉一個基本的例子:

PHP方面:

<?php echo json_encode($responce_object); // DONE ?>

JavaScript方面:

on_responce(responce) 
{    
    var res_obj = eval('('+responce+')');
    fire_event(res_obj);
}

上面的示例非常簡單且通用,可以顯示其工作原理,但功能齊全的解決方案並不需要太多。 特定解決方案的真正魔力將在“ fire_event()”方法中發生-這是可以通過jquery或其他方法處理對象的地方。

如果您使用$ .ajax將內容提交到php,則無需刷新頁面。 該頁面上示例的代碼如下所示

var javascriptVariable = "John";

$.ajax({
    url: '/myphpfile.php',
    type: "GET",
    dataType: "json",
    data: {
        name: javascriptVariable,
    },
    success: function( data ) {
        // do success function here
    },
    error:function( xhr, ajaxOptions, thrownError ) {
        // handle errors here
    }
}, "json");

暫無
暫無

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

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