2013-11-22 43 views
0

我想根據用戶數據(姓氏)操作頁面上的元素。我建立了一個表單,並使用post來更新輸入數據到php頁面。我的想法是,以獲得$ _ POST值到DOM:然後在JQuery中搶:

窗體頁:

<form action="display.php" method="post"> 
<input type="text" name="test" /> 
<input type="submit" value="go!!" /> 
</form> 

Display.php的

<?php 
//store post value in var 
$var = $_POST['test']; 
?> 

(上面的html)

<body> 
<?php 
echo '<form action="" method="">'; 
echo '<input type="hidden" class="grab" name="name1" value="' . $_POST['test'] . '">'; 
echo '</form>'; 
?> 
<script type="text/javascript" src="js/script.js"></script> 
</body> 

(in html)

周的script.js

var grab = $('input.grab').val(); 
document.write(grab); 

我是一個PHP新手,才明白自己解決我的所有問題作爲客戶端開發者,而不是服務器端。我在做一些非常錯誤的事情嗎?還是有更好的辦法

+0

如果您使用GET而不是POST,則可以使用JavaScript從'window.location.search'查詢字符串中提取值。 – Blazemonger

+0

如果你正在使用javascript,看起來幾乎不會發布表單,並且直接使用事件處理函數捕獲輸入的值。 – adeneo

+0

只是好奇...所以你只是想顯示輸入的價值是正確的?如果是這樣,爲什麼不只是使用所有的PHP來保持一致?對不起,我是相當新的自己,所以只是好奇 – Dora

回答

1

這很好。由於JavaScript是客戶端語言,因此這是一種完全可接受的方法,可以讓您的JavaScript訪問僅可用於服務器的變量。

您也可以使用類似:

<script> 
    var myVar = '<?php echo $_POST['var']; ?>'; 
    console.log(myVar); 
</script> 

爲了防止XSS和避免與POST數據引號的問題,您應該使用htmlspecialchars消毒輸出:

<script> 
    var myVar = '<?php echo htmlspecialchars($_POST['var'], ENT_QUOTES, 'utf-8'); ?>'; 
    console.log(myVar); 
</script> 

否則,$ _ POST [ 'var'] = 'example將打破你的JS並打開一個XSS漏洞。

+1

你顯然想要轉義輸出來防止JS語法錯誤或XSS攻擊 –

+0

@JesseBunch我知道,我只是不想複雜的答案。另一個更安全的例子,以防萬一有人決定複製和粘貼。 –