JQuery AJAX размещения неправильных данных - PullRequest
1 голос
/ 18 февраля 2010

У меня есть форма:

<form id="deletesubmit" style="display:inline" >
    <input  style="width:50px" type="text" id="delcustomerid" name="delcustomerid" value="'.$row['customersid'].'">
    <button type="submit" class="table-button ui-state-default ui-corner-all" title="delete"><span class="ui-icon ui-icon-trash"></span></button>
</form>

Форма получает идентификатор клиента и вставляет его в качестве значения.Это показывает, правильный клиент для этой строки все в порядке.Затем, когда я отправляю форму через ajax, она как-то публикует идентификатор отдельной строки.Это скрипт:

$("form#deletesubmit").submit(function () {

    var delcustomerid = $('#delcustomerid').attr('value');
    $.ajax({
        type: "POST",
        url: "delete/process.php",
        data: "delcustomerid=" + delcustomerid,
        success: refreshTable
    });
    return false;
});
});

И, наконец, вот php для публикации формы:

<?php include("../../config/config.php"); ?>
<?php          
    $deleteid  = htmlspecialchars(trim($_POST['delcustomerid']));
    mysql_send("DELETE FROM customers where id='$deleteid'");
?>

Я протестировал его без ajax, и он работает нормально.Там должно быть что-то не хватает.Это не размещение правильного значения.Потратил дни, пытаясь решить это.

Ответы [ 3 ]

4 голосов
/ 18 февраля 2010

Используя attr('value'), вы извлекаете исходное значение, которое может не соответствовать вашему; используйте .val() вместо этого. Кроме того, вы можете настроить свой звонок немного проще:

$("form#deletesubmit").submit(function() {
  var delcustomerid  = $(this).find('#delcustomerid').val();
  $.post( "delete/process.php", { delcustomerid: delcustomerid }, refreshTable );
  return false;
});

Наконец, убедитесь, что ваш PHP выводит правильные значения id, просмотрев источник сгенерированного HTML.

Также в PHP: Не используйте htmlspecialchars для выхода из mysql. Так как это должно быть целое число, вы можете просто использовать int:

$deleteid  = (int) trim($_POST['delcustomerid']);
mysql_send("DELETE FROM customers where id='$deleteid'");

Имейте в виду, что массив (если кто-то передал deleteid[]= на эту страницу) будет иметь значение 1. Так что либо встроите в него тест, либо просто убедитесь, что в этой таблице не осталось id = 1.

2 голосов
/ 18 февраля 2010

Я просто собирался предложить метод .val (). Также установите firebug, если вы еще этого не сделали. Это позволит вам точно увидеть, что вы публикуете на сервере.

0 голосов
/ 18 февраля 2010

Поместите предупреждение в код до $ .ajax ({вроде так:

alert(delcustomerid);

Правильно ли указано значение перед публикацией?

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