如何解决die(json_encode)) 重定向到显示 json 数据的页面
当表单提交完成时,页面显示原始 json 数据而不是将其记录到控制台。 PHP 和 html 代码都在同一页面上,所以我根本没想到页面会发生变化。
发布
jQuery(function($) {
$("#idSearch").submit(function(event) {
$.ajax({
url: "/index.PHP",type: "POST",data: $(this).serialize(),dataType: "json",sucess: function(data) {
console.log(data);
}
})
})
});
PHP 表单处理
<?PHP
if (isset($_POST['orderId'])){
header('Content-Type: application/json');
require 'private/database.PHP';
$sql = "SELECT * FROM form";
$result = MysqLi_query($conn,$sql);
$data = array();
if (MysqLi_num_rows($result) > 0) {
while ($row = MysqLi_fetch_assoc($result)) {
$data[] = $row;
}
}
die(json_encode($data));
}
?><!DOCTYPE html>
我在另一个网页上实现了类似的东西,但它按我的预期工作。
发布
function loadInfo() {
jQuery(function($) {
$.ajax({
method: "POST",url: "/admin.PHP",data: {loadInfo: 1},success: function(data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
setMarker(data,i,"red");
printInfo(data,i);
}
}
})
});
}
PHP 表单处理
<?PHP
if(isset($_POST['loadInfo'])){
header('Content-Type: application/json');
require 'private/database.PHP';
$sql = "SELECT * FROM form";
$result = MysqLi_query($conn,$sql);
$data = array();
if (MysqLi_num_rows($result) > 0) {
while ($row = MysqLi_fetch_assoc($result)) {
$data[] = $row;
}
}
die(json_encode($data));
}
?><!DOCTYPE html>
为什么这两个页面的行为不同?
解决方法
您应该停止默认表单事件。 浏览器继续操作并提交表单,因此使用 POST 重新加载页面。
您可以阻止使用 Event.preventDefault()
jQuery(function($) {
$("#idSearch").submit(function(event) {
event.preventDefault(); // << ADD
$.ajax({
url: "/index.php",type: "POST",data: $(this).serialize(),dataType: "json",success: function(data) { // << Here 'success' not 'sucess'.
console.log(data);
}
})
})
});
,
已解决:
<form action="index.php" method="POST" id="idSearch">
<input type="text" name="orderId" placeholder="訂單號瑪" required><br>
<input type="submit">
</form>
我认为我不需要表单的操作参数,因为它被发送到同一个 .php?一旦我添加了路径,代码就起作用了。奇怪。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。