2011-07-31 69 views
0

我送的變量是這樣的:如何通過AJAX在URL中發送變量?

xmlhttp.open("GET","insert-karma.php?pid=<? echo $pid; ?>",true); 

的AJAX部分似乎並不成爲問題,如果我檢查Sript的PHP正確呼應整數。 (它顯示的網址爲:insert-karma.php?pid=5)。但是PHP沒有獲取變量。 (我想呼應,它簡化版,表明參選)

這是PHP文件:

// Connect to db; 

$pid = $_POST['pid']; 

$sql="UPDATE Poems SET Karma = Karma + 1 WHERE Pid = '$pid'"; 

// Disconnect form database; 

我在做什麼錯?我如何設法發送$pid到PHP update-karma.php?

回答

0

首先,你不應該在你的ajax請求中使用PHP,它只是讓事情變得更加複雜,PHP首先用於服務器端腳本 secound,你應該使用xmlhttp.open(「POST」,「insert-karma。 ...)如果u普通使用POST之間POST 三唯一重要差異(不是唯一的,但重要的),並得到的是:

GET請求可以被緩存

GET請求可以留在瀏覽器歷史記錄

GET請求可以加書籤

GET請求可以分佈&共享

GET請求可以被黑客攻擊LOOL

所以ü不能使用Get對於喜歡登錄或不安全的和危險的行動...

POST可以韓德爾太長數據

郵政更安全的Cuz它不是會被緩存或保存在歷史或書籤

ü可以清楚地發現,POST在瀏覽器不要顯示地址欄,但得到做 'www.anything.com/index.php?bla=bhe'

我希望我在這裏幫忙! :)

2

嘗試$ PID = $ _GET [ 'PID']

$ PID = $ _REQUEST [ 'PID'];

+0

謝謝,做到了。爲什麼POST不工作?只是好奇。謝謝 – lisovaccaro

+0

因爲你使用GET方法發送變量xmlhttp.open(「GET」,「insert-karma ... as Ibu said – kukipei

2

您使用GET發送的變量,因此在你的PHP你必須使用$ _GET變量

$pid = $_GET["pid"]; 

也要避免直接在SQL查詢中使用的變量。你將很容易受到sql注入的影響。

如果用mysql:

$pid = mysql_real_escape_string($_GET["pid"]); 

或者如果你正在傳遞一個整數

$pid = (int)$_GET["pid"]; 
0

就在這裏建議,因爲你已經得到了答案。嘗試在編寫JS代碼時使用一些JavaScript庫來幫助您。 我建議jquery

而且請閱讀什麼是GET,POST請求和應該何時使用。