2016-11-02 53 views
-1

我想弄清楚用AJAX檢索php變量的最佳方法,然後將這些變量變成javascript變量。如何將php變量變成javascript變量

比方說,我的PHP文件中我有以下幾點:

echo $total; 
echo $actual; 

編輯:JSON

echo json_encode($comments); 

我怎樣才能把這些PHP變量到JavaScript變量的AJAX調用中success: function (data) {還是有一個更好的方法來做到這一點?

+0

從您的PHP代碼返回JSON。結果反序列化的JS對象可以保存兩個值。 –

+0

將它全部放在一個數組/對象中,並使用'json_encode()'一次性全部返回。然後你可以很容易地解析它在JavaScript中。 – jeroen

+0

你使用任何PHP框架?我知道一個[包](https://github.com/laracasts/PHP-Vars-To-Js-Transformer)laravel就是這麼做的。 –

回答

1

創建一個結果數組以包含所有想要返回的變量。對結果進行編碼而不是$comments

$result = array('total' => $total, 'actual' => $actual); 
echo json_encode($result); 

在JavaScript中,具體的數據類型設置爲json和jQuery會自動解析它,那麼你可以訪問的變量作爲成功的說法性能。

$.ajax({ 
    url : '...', 
    type : 'post', 
    dataType : 'json', 
    success : function(result) { 
     console.log(result.total); 
     console.log(result.actual); 
    } 
}); 
+0

謝謝。我從來沒有看到這個答案張貼。完美工作。 – Paul

0

你必須做的是json_encode,通過手工或通過製作這些變量的數組並通過ajax檢索它。通過這個你可以讓它變成java腳本。

0

只要頁面加載,您將不得不將它們聲明爲全局變量。這可以獨立完成或使用窗口範圍。

<script> 
    // On page load 

    total = <?php echo $total; ?>; 
    actual = <?php echo $actual; ?>; 
    // OR 
    window.total = <?php echo $total; ?>; 
    window.actual = <?php echo $actual; ?>; 
    </script> 

現在,您可以在成功回調中使用這些變量。

0

有人已經使用json,所以我打算使用簡單的字符串分隔符。複製粘貼接下來的兩碼在兩個文件中給定的名稱,然後打開ajax1.php在您的瀏覽器:

ajax1.php

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    <script type = "text/javascript"> 
var total; // JAVASCRIPT VARIABLE. 
var actual; // JAVASCRIPT VARIABLE. 
function myAjax() 
{ $.ajax({ url  : "ajax2.php", 
      success : function (data) 
         { var arr = data.split("^^"); // ◄■■ SEPARATE DATA RETURNED. 
         total = arr[0]; // FIRST VALUE. 
         actual = arr[1]; // SECOND VALUE. 
         alert(total); 
         alert(actual); 
         }, 
      error : function (xhr) 
         { alert("error"); 
         } 
     }); 
} 
    </script> 
    </head> 
    <body> 
    <button onclick="myAjax()">Click here</button> 
    </body> 
</html> 

ajax2.php

<?php 
$total = 450; 
$actual = 10; 
echo $total . "^^" . $actual; // "^^" IS THE SEPARATOR. ANYTHING CAN BE USED. 
?>