jquery$.ajax到php问题

jquery$.ajax到php问题,php,ajax,post,jquery,Php,Ajax,Post,Jquery,我对jquery$.ajax有两个问题。 第一个问题是我有一个名为action.php的php文件,下面是代码: if($_GET['action']=='add'){ //rest of the code here } 我使用jquery$.Ajax函数在表单填充时调用它: $.ajax({type:"POST", url:"action.php?action=add", data:$("#form").serialize(), cache:false, timeout:10000}

我对jquery$.ajax有两个问题。 第一个问题是我有一个名为action.php的php文件,下面是代码:

if($_GET['action']=='add'){
    //rest of the code here
}
我使用jquery$.Ajax函数在表单填充时调用它:

$.ajax({type:"POST", url:"action.php?action=add", data:$("#form").serialize(), cache:false, timeout:10000});
这是可行的,但我想知道是否仍然可以发送action=addcode和数据,而不是url

第二个问题是我有一个链接:

<a href="#" onclick="delete(4);">delete row from mysql where id is 4</a>
当然还有action.php代码:

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

但是它不起作用。我该怎么办?

你有一个函数
deleteUser()
,你正在使用
delete()
甚至你正在发送post action is
delete
,而你的php脚本正在寻找
deleteStudior

使您的onclick
onclick=“deleteUser(4);”

改变你的行为

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


关于第一个问题:

您可以使用所需的名称/值向表单中添加隐藏的输入。例如:

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

关于第二个问题:


根据您的代码,您似乎发送了“delete”,但在您测试的条件下,如果等于“deletestudent”,这可能是您的问题。

更改类型以获取或删除它,$。ajax默认类型为GET

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

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

第一部分:

var postData = $("#form").serialize();
postData.action = 'add';
$.ajax({
    type:"POST"
  , url: "action.php"
  , data: postData
  , cache: false
  , timeout:10000
});
对于第二部分:由于“操作”值不一致而无效:
delete
vs
delete student
。函数名也不是:
delete()
vs
deleteUser()


此外,我还建议在该查询中应用一些SQL注入保护。

很抱歉,我不得不否决这一点。GET请求应为幂等句点。电子战。你的逗号怎么了?真恶心,恶心?我不喜欢后置分隔符。在这行的开头看到它们,就非常清楚地表明我正在处理一个新的值/参数/whatevever。也使编辑更容易。
....WHERE `student_id` = {$_GET['id']}");
var postData = $("#form").serialize();
postData.action = 'add';
$.ajax({
    type:"POST"
  , url: "action.php"
  , data: postData
  , cache: false
  , timeout:10000
});