2015-11-03 35 views
-1

POST變量,所以我需要在同一個index.php文件中使用JavaScript變量在我的PHP代碼。 我正在使用jQuery Post(),將變量發送到一個單獨的php文件,然後將該變量保存爲全局變量,因此我可以在索引文件中使用它。問題是該變量沒有被保存,我無法正確打印任何PHP輸出。JQuery的後() - 處理與PHP

這是我的index.php文件:

<script> 
var nameToSend = 'foo fighters'; 
var request = $.post("../getuser.php", { name: nameToSend }); 

</script> 

<div> 
<?php 
    echo 'name: '; echo $GLOBALS['name']; 
?> 
</div> 

getuser.php

global $name; 
$name = $_POST["name"]; 

變量名沒有在絲網印刷,只有這樣我又可以在索引訪問文件正在使用post函數返回的變量'msg',但是它再次處於javascript中,我需要它在PHP中。 謝謝!

+1

你至少需要呼應的東西到屏幕上。 'echo $ name;'和你的$。post調用需要指定回調或使用函數返回的承諾。 – Shanimal

+0

儘量避免使用'global',除非它是絕對的,關鍵的必要的,肯定不是這裏的情況。如果您開始使用此模式,它會在您創建的代碼中引發很多衝突。 – tadman

+0

您是否意識到,一旦頁面加載,該PHP代碼將不會再次運行? – epascarello

回答

1

index.php呈現,當你只要求它執行。更具體地說:當您連接到http://myserver.com/index.php時,index.php中的代碼由PHP解釋器執行,並將結果發送到瀏覽器。你不能再玩了。

技術上講,它就像:

  • 瀏覽器會打開一個myserver.com連接,並要求服務器執行的index.php
  • 服務器執行的index.php併產生輸出和自$GLOBALS['name']是空的什麼被打印。
  • 服務器發送輸出到瀏覽器和關閉連接!
  • 瀏覽器顯示的輸出到你。

的index.php是死在這一點上,在這裏沒有更多的執行。例如,當你重新加載頁面時,它會重新開始,就像你第一次連接它一樣,你之前設置的變量都沒有了。

其次重要的一點是,所有PHP文件適用於自己,所以當你從getuser.php設置一個變量它不會index.php設置,反之亦然。

您可以使用會話共享php文件中的變量,但這不是您想要的特定情況下的變量,因爲服務器執行php並在將輸出發送到瀏覽器後關閉連接,您無法再使用它index.php

這樣做的正確的方法是:

的index.php:

<script> 
var nameToSend = 'foo fighters'; 
var request = $.post("../getuser.php", { name: nameToSend }, function(response) { 
    $('#response-div').html(response); 
}); 
</script> 

<div id="response-div"></div> 

getuser.php:

$name = $_POST["name"]; 
echo "Hello $name"; 

所以你要做的計算裏面的getuser.php(不是index.php),並把輸出產生的getuser.php與JavaScript的正確位置。