2016-02-07 59 views
-1

我目前正在尋找一種方法來訪問一個javascript變量,並使用php代碼將其存儲在數據庫中而不使用Ajax。下面的代碼是什麼,我目前工作的一個精簡版本:如何使用php訪問javascript變量並將其存儲到數據庫中

<script> 
function secondPassed() { 
    document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1; 
    int val = 0; 
    num = "<?php $insert = mysql_query('INSERT INTO tbl_timer VALUES(\'\', \"."$val".\" )',$connection); ?>";} 
</script> 

我'試圖讓val的值,並將其存儲在數據庫中,但它不會被插入。請告訴我我的代碼出錯了。

+1

您要麼使用ajax,要麼重新加載頁面,要麼使用套接字,或者其他任何可以實際將數據發送到服務器的東西。 – adeneo

+0

但我只需要使用javasrcipt。 –

+2

你不能,PHP在服務器上運行,它已經完成了它的工作,它將HTML發送給用戶瀏覽器,這就是JavaScript運行的地方。不用說,在頁面到達用戶瀏覽器的時候,用PHP做任何事情已經太遲了,現在你必須發出請求並把東西發回服務器再次使用PHP。 – adeneo

回答

0

請告訴我這段代碼出錯了。

好,.PHP腳本由服務器執行,以前結果發送給用戶。包裝它在<script></script>不會幫助。所以,你的代碼流程是這樣的:

→ Serverside集團,PHP:

<?php 
    ... 
?> 
<script> 
function secondPassed() { 
    document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1; 
    int val = 0; 
    num = "<?php 
     $insert = mysql_query('INSERT INTO tbl_timer VALUES(\'\', \"."$val".\" )',$connection); 
     // error notice (probably suppresed), there is no $val variable defined... 
     // If somethig _will_ be inserted, it will contain just (0) or ("") 
?>";} 
</script> 

→客戶端,HTML:

... 
<script> 
function secondPassed() { 
    document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1; 
    int val = 0; 
    num = "0";} 
</script> 

而且當瀏覽器執行的是<script>,它只會存儲遞增值在#time,沒有別的。

如果您希望將某些內容從javascripts傳遞到服務器,則必須向服務器發送請求,總是。這是合乎邏輯的。

所以,作爲@adeneo建議,你要麼必須使用:

  1. ajax請求(aynchronous /同步)。
  2. 餅乾(同步,重新加載頁面將需要通過cookie來服務器)
  3. 套接字(異步/同步,並有大量插座相關的解決方案)
  4. iframe S(異步,可引起不必要的副作用)。
  5. 根本不要使用服務器端數據庫(如果適用)。只需使用瀏覽器的localStorage或類似的。
+0

我按照你的建議使用ajax,但它仍然不起作用。這是我的代碼。

+0

沒有必要在javascript中使用'$'變量名('$ val'和'val'是_different_變量),並且沒有'int'類型說明符。使用像這樣的內容:''。記住,你需要包含在你的html中的jQuery才能工作。另外,在幾乎所有現代瀏覽器中都有調試控制檯,您可以在代碼中查找錯誤(語法,執行)(例如Chrome中的開發人員工具)。 – ankhzet

0

我實際上已經多次做過這樣的事情。將變量從javascript傳遞到php並不是什麼大事。然而,如果沒有你想要做的事情的具體情況,你很難回答你。這裏的問題是,你是否試圖通過實時基礎上的秒數?您是否嘗試輸入瀏覽器已獲取的數據(通過windows.onload)或通過用戶交互?在與服務器的交互活動時傳遞的秒數是多少?如果是這樣,你需要先通過json緩存數據。否則php只是要用不同的時間渲染。你可以用XML來實現,但是如果這是關鍵任務,速度會有所不同,並且由於php與服務器通信的方式,你將得到非常不同的數據。 json將是更好的選擇。您可以使用Angularjs(不是我個人的建議),或者如果它是您網站上的一個小應用程序,ReactJS非常方便,但您需要閱讀它。這裏沒有足夠的空間來解釋。否則首先使用.data(),這是jQuery和技術上的AJAX緩存數據。坦率地說,idk爲什麼你不想使用AJAX,它是解決這個問題的最佳工具。 。data()是我總是用於原型和生產這類問題的東西。它像一個魅力。

BOTTOM LINE:如果沒有將數據緩存到json或xml中,沒有辦法做到這一點,以便PHP可以稍後檢索它。 PHP不會實時做到這一點。它只是沒有爲它構建。你將需要一個類來檢索數據,無論是通過POST方法和一個類從json轉換爲php對象,然後你可以使用任何方法傳遞給MYSQL。

相關問題