2010-04-20 125 views
1

我有jQuery $ .ajax的兩個問題。 第一個問題是IHAVE名爲action.php的PHP文件和這裏的代碼:

if($_GET['action']=='add'){ 
    //rest of the code here 
} 

而且使用jQuery $就功能調用,當填寫表單:

$.ajax({type:"POST", url:"action.php?action=add", data:$("#form").serialize(), cache:false, timeout:10000}); 

這個工作,但我想知道有無論如何發送行動=添加代碼與數據,而不是網址?

和我有第二個問題是,我有一個鏈接:

<a href="#" onclick="delete(4);">delete row from mysql where id is 4</a> 

和一個jquery功能:

function deleteUser(id){ 
    $.ajax({type:"POST", url:"action.php?action=delete", data:"id="+id, cache:false, timeout:10000});} 

,當然還有action.php的代碼:

if($_GET['action']=='deletestudent'){ 
    mysql_query("DELETE FROM `students` WHERE `student_id` = {$_POST['id']}"); 
} 

但它不起作用,我該怎麼辦?

回答

1

你有一個函數deleteUser()和你正在使用delete()即使你發送後動作delete,而你的PHP腳本正在尋找deletestudent

讓你的onclick onclick="deleteUser(4);"

,並從改變你的行動

$.ajax({url:"action.php?action=delete&id="+id, cache:false, timeout:10000});} 

$.ajax({url:"action.php?action=deletestudent&id="+id, cache:false, timeout:10000});} 
0

對於第一個問題:

您可以使用所需的名稱/值向表單添加隱藏輸入。例如:

<input type="hidden" name="action" value="add" /> 

對於第二個問題:

根據你的代碼,似乎你正在發送「刪除」,但條件你是否等於「deletestudent」測試,也許這是你的問題。

-1

chnage到變成O刪除它的類型,$就默認方式爲get

$.ajax({url:"action.php?action=delete&id="+id, cache:false, timeout:10000});} 

php中改變你的

....WHERE `student_id` = {$_GET['id']}"); 
+3

對不起,我*有*投票。 GET請求應該是冪等的,**期**。 http://www.w3.org/2001/tag/doc/whenToUseGet.html – 2010-04-20 14:10:24

3

第一部分:

var postData = $("#form").serialize(); 
postData.action = 'add'; 
$.ajax({ 
    type:"POST" 
    , url: "action.php" 
    , data: postData 
    , cache: false 
    , timeout:10000 
}); 

對於第二部分:即不工作,因爲您的「動作」值不一致:delete vs deletestudent。您的函數名稱也不是:delete() vs deleteUser()

此外,我建議在該查詢中應用一些SQL注入保護。

+2

ew。你的逗號怎麼了?真噁心。 – 2010-04-20 17:09:35

+0

Gross?我不喜歡後固定分隔符。在開始時看到他們使我清楚地知道,我正在處理一個新的價值/參數/ whatevever。也使編輯更容易。 – 2010-04-20 17:22:20

+0

我首先喜歡逗號 – w0lf42 2012-02-26 20:20:50