php - AJAX MySQL 更改输入值
问题描述
我正在尝试根据 MySQL 查询的结果更改两个文本框的值。我有以下错误:
未捕获的 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();
?>
我该如何解决这个错误?我想从选择查询中返回值并更新输入值。谢谢你。
解决方案
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]);
}
});
});
推荐阅读
- django - 如何使用 django 模板提供文件以从 HTML 下载
- mysql - MySQL - 大型数据库,提高搜索时间
- aem - AEM-REX-001-008:无法将请求的使用权限应用于给定文档
- reactjs - 用 gatsbyjs 上的帖子捕获数组
- python-3.x - Python:将 numpy ndarray 的值添加到现有的 pandas Dataframe
- java - 在 JPA sql 查询中,HIbernate 无法解析 foreignKey 列
- react-native - 如何在 Android 上进入 Expo 的主屏幕
- python - 如何将列表中的前三个元素作为列,其余作为行 - Python
- regex - 在记事本++中搜索特定字符串
- angular - 在 ngClick 之后,我无法使用“this”访问 Typescript 类