Проблема jquery $ .ajax to php - PullRequest
       27

Проблема jquery $ .ajax to php

1 голос
/ 20 апреля 2010

У меня две проблемы с jquery $ .ajax. Первая проблема заключается в том, что у меня есть php-файл с именем action.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});

это работает, но я хотел знать, есть ли способ отправить действие = добавить код с данными, а не URL?

и вторая проблема, которая у меня есть, заключается в том, что у меня есть ссылка:

<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']}");
}

но это не работает. Что мне делать?

Ответы [ 4 ]

3 голосов
/ 20 апреля 2010

Первая часть: Да

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

Для 2-й части: , которая не работает, потому что ваши значения "action" не совпадают: delete против deletestudent. И ваши имена функций: delete() против deleteUser()

Кроме того, я бы порекомендовал применить некоторую защиту от внедрения SQL в этом запросе.

1 голос
/ 20 апреля 2010

У вас есть функция deleteUser(), и вы используете delete(), даже если вы отправляете сообщение, действие delete, в то время как ваш php-скрипт ищет deletestudent

сделай свой клик 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 голосов
/ 20 апреля 2010

изменить тип на GET или удалить его, тип $ .ajax по умолчанию - GET

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

в php смените

....WHERE `student_id` = {$_GET['id']}");
0 голосов
/ 20 апреля 2010

Для первой задачи:

Вы можете добавить к своей форме скрытый ввод с нужным вам именем / значением. Пример:

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

Для второй проблемы:

Согласно вашему коду, вам кажется, что вы отправляете "delete", но в состоянии, которое вы тестируете, если оно равно "deletestudent", возможно, это ваша проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...