2012-12-05 235 views
8

我有一個PHP文件,生成一個變量,我想變量被放入一個JavaScript函數,這是由主頁上的onclick調用。這是可能從PHP發送到JavaScript?發送PHP變量爲JavaScript函數

+1

每次點擊後它是否需要不同(例如,產生當前服務器端時間的腳本)?如果是這樣,你可能需要[Ajax](https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started)。 – apsillers

回答

15

你可以做到以下幾點:

<script type='text/javascript'> 
    document.body.onclick(function(){ 
     var myVariable = <?php echo(json_encode($myVariable)); ?>; 
    }; 
</script> 
+0

我將如何指定從哪個php文件獲取變量? – user1879926

+1

我認爲你需要多學習一點php。以一個簡單的教程,將告訴你如何回聲的東西。嘗試http://php.net/manual/en/tutorial.php –

+1

爲什麼有必要在那裏有json_encode?爲什麼不簡單地echo $ myVariable? – TGeorge

1

如果我理解正確的話,你應該能夠沿着以下的線路做一些事情:

function clicked() { 
    var someVariable="<?php echo $phpVariable; ?>"; 
} 
+1

你需要用分號結束 – mplungjan

+0

@username tbd我需要將整個php文件放在括號內嗎?如果不是,我將如何能夠指定變量來自哪個php文件? – user1879926

4

你的JavaScript將不得不一個PHP解析的文件中定義。

例如,在index.php文件您可以這樣

<?php 
$time = time(); 
?> 
<script> 
    document.write(<?php echo $time; ?>); 
</script> 
4

只要寫:

<script> 
    var my_variable_name = "<?php echo $php_string; ?>"; 
</script> 

現在它可以作爲一個JavaScript在上面的代碼下面的任何一點上都可以用名稱my_variable_name來變量。

0

您可以將PHP值傳遞給JavaScript。 PHP將執行服務器端,以便計算該值,然後您可以將其回顯到包含javascript的HTML。然後JavaScript將在客戶端瀏覽器中執行PHP計算服務器端的值。

<script type="text/javascript"> 
    // Do something in JavaScript 
    var x = <?php echo $calculatedValue; ?>; 
    // etc.. 
</script> 
1

一個不錯的選擇是使用jQuery/AJAX。 Look at these examples並在您的服務器上試用它們。在這個例子中,在FILE1.php中,請注意它傳遞一個空白值。

data: 'username='+username+'&password='+password, 

在FILE2.php例子,你會找回這樣的價值觀:如果你願意的話,這可能會是這個樣子(假設JavaScript的乏稱爲usernamepassword你可以傳遞一個值

$uname = $_POST['username']; 
$pword = $_POST['password']; 

然後做你的MySQL查詢,因此返回值:

echo 'You are logged in'; 

這將郵件傳遞You are logged in來蘇FILE1.php中的函數ccess,並且消息字符串將存儲在名爲「data」的變量中。因此,成功函數中的alert(data);行會提示該消息。當然,你可以使用echo任何你喜歡的東西,甚至是大量的HTML,比如整個表格結構。

Here is another good example來審查。

該方法是創建您的表單,然後使用jQuery檢測按鈕按下並通過AJAX將數據提交到輔助PHP文件。上面的例子顯示瞭如何做到這一點。

輔助PHP文件接收變量(如果有的話發送)並返回響應(無論您選擇發送)。該響應隨後會顯示在您的AJAX調用的Success:部分中作爲「數據」(在這些示例中)。

jQuery/AJAX代碼是javascript,所以你有兩種選擇:你可以將它放在你的PHP主文檔中的<script type="text/javascript"></script>標籤內,或者你可以在你的PHP文檔的底部放置<?php include "my_javascript_stuff.js"; ?>。如果您使用jQuery,請不要忘記像給出的示例一樣包含jQuery庫。

就你而言,這聽起來像你可以非常反映我建議的第一個例子,在AJAX成功函數中不發送數據並接收響應。然而,無論您需要如何處理這些數據,您都必須在成功功能中進行操作。起初似乎有點奇怪,但它有效。