AJAX MySQL Изменить значение входов - PullRequest
3 голосов
/ 03 июня 2019

Я пытаюсь изменить значение двух текстовых полей на основе результата запроса MySQL.У меня следующая ошибка:

Uncaught RangeError: Превышен максимальный размер стека вызовов

<head>
   <script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
</head>
<body>

    <form id="form">
    <input class="form-control" type="text" id="userfname" name="frsname"
    value="" /> 
    <input class="form-control" type="text" id="userlname" name="lstname" value="" /> 
    <input type="submit" name="submit" id="submit" value="Save" />
    </form>

<script>
    $('#submit').click(function () {
        $.ajax({
            type: "POST",
            url: "index.php",
            data: form,
            dataType: "json",
            success: function (data) {
                $("#userfname").html(data[0]);
                $("#userlname").html(data[1]);
            }
        });
    });
</script>
</body>

PHP-файл:

<?php

    if(!isset($_SESSION)){
        session_start();
    }

    require 'config.php';

$stmt2 = mysqli_prepare($link, "SELECT firstname, lastname FROM users WHERE id=?");
if(!$stmt2) {
    die($link->error);
}
$stmt2->bind_param("i", $_SESSION['id']);
if(!$stmt2->execute()) {
    die($stmt2->error);
}
$stmt2->bind_result($fname, $lname);
$stmt2->fetch();
$stmt2->close();

$arr = array();
$arr[0] = $fname;
$arr[1] = $lname;

echo json_encode($arr);

$link->close();
?>

Как я могурешить эту ошибку?Я хотел бы вернуть значения из запроса выбора и обновить входные значения.Спасибо.

Ответы [ 3 ]

4 голосов
/ 03 июня 2019

data: form пытается преобразовать элемент <for> в URL-кодированные данные, что не работает. Поскольку скрипт PHP не использует параметры POST, вам не нужна эта строка.

Вы также должны запретить отправку формы по умолчанию с помощью event.preventDefault().

Для заполнения полей <input> необходимо использовать .val(), а не .html().

    $('#submit').click(function (e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "index.php",
            dataType: "json",
            success: function (data) {
                $("#userfname").val(data[0]);
                $("#userlname").val(data[1]);
            }
        });
    });
1 голос
/ 03 июня 2019

Также измените это <input type="button" name="submit" id="submit" value="Save" />

0 голосов
/ 03 июня 2019

Вы не публикуете никаких значений, поэтому вместо них следует использовать $ .getJSON. Поместите ваш php в файл getUserDetails.php. Также используйте метод jQuery val () для обновления входных значений.

$('#submit').click(function () {
    $.getJSON("getUserDetails.php").done(function(json) {
        $("#userfname").val(json[0]);
        $("#userlname").val(json[1]);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...