Проблема обновления SQL с помощью jQuery и AJAX - PullRequest
0 голосов
/ 20 ноября 2018

У меня особенная проблема с этим приложением.Он не обновляет столбцы всегда и не существует правила относительно того, когда он будет обновляться, а когда - нет.Кажется совершенно случайным, и не возвращает меня на страницу admin.php.

Кроме того, когда он изменяет / обновляет запись в БД, он не отправляет ответ Ajax (предупреждение («ОК»)).Код ниже:

--this is admin.php

<div class="update" style="display:none">
	<form method="post" action="adminFunctions.php">
		<div class="input-group">
			<label>new name</label>
			<input class='newNameInput' type="text" name="newName" >
		</div>
		<div class="input-group">
			<label>new last name</label>
			<input class='newLastNameInput' type="text" name="newLastName">
		</div>
		<div class="input-group">
			<button type="submit" class="btn changePerson" name="changePerson">change</button>
		</div>
	</form>
</div>

затем Jquery:

$(document).ready(function(){

    var changeId;
    $('.changeMe').click(function () {
      var el = this;
      var id = this.id;
      var splitid = id.split("_");
      changeId = splitid[1];
      $('.update').css('display', 'block');
    });
    
    $('.changePerson').click(function () {
          var newNameFor = $('.newNameInput').val();
          var newLastNameFor = $('.newLastNameInput').val();
          $.ajax({
            url: './adminFunctions.php',
            type: 'POST',
            data: 'changeSth=' + changeId + '&newName=' + newNameFor + '&newLastName=' + newLastNameFor,
            success: function(response) {
                if(response == 1) {
                  alert('OK');
                } else {
                  console.log('entry update failed');
                }
            }
          })
        });
});

- и adminFunctions.php

if(isset($_POST['changeSth'])) {
    $id = $_POST['changeSth'];
    $newName = $_POST['newName'];
    $newLastName = $_POST['newLastName'];

    changeEntry($id, $newName, $newLastName);
}
function changeEntry ($id, $newName, $newLastName) {
    global $testConn;
    if($id) {
        $query = "UPDATE people SET firstName='$newName', lastName='$newLastName' WHERE id=$id";
        mysqli_query($testConn, $query);
        header('location: admin.php');
        echo 1;
    } else {
        echo 0;
    }
    header('location: admin.php');
}
Я новичок в PHP, поэтому, пожалуйста, прости меня за отсутствие элегантности в моем коде.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Я создал образец скрипка для вас.Я сделал правильный пример пользовательского интерфейса, вам нужно адаптировать его на стороне сервера.Ключевым изменением является то, что вам нужно передавать данные, а не URL в ajax через POST.

 $('.changePerson').click(function () {
      var newNameFor = $('.newNameInput').val();
      var newLastNameFor = $('.newLastNameInput').val();
        var idFor = $('input[type="hidden"]').val();

      var data = {changeSth: idFor, newName: newNameFor, newLastName: newLastNameFor};
      $.ajax({
        url: './adminFunctions.php',
        type: 'POST',
        data: data,
        success: function(response) {
            if(response == 1) {
              alert('OK');
            } else {
              console.error('entry update failed');
            }
        }
      })
    });

РЕДАКТИРОВАТЬ:

Первое, что нужно выделить, это type = 'submit 'предназначен для ввода ни для тега кнопки

Во-вторых, данные должны передаваться с помощью метода POST или строки url-строки.Есть несколько разных подходов для получения данных из формы HTML.Вы можете использовать подход из моего примера с идентификаторами / классами или сериализовать всю форму и передать ее.(спасибо @harry)

0 голосов
/ 20 ноября 2018

Вы делаете запрос AJAX, и перенаправление на сервер не требуется.Вы должны перенаправить его со стороны JS, если вы действительно хотите это сделать.Удалите header('location: admin.php'); из вашего кода PHP.

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