微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

die(json_encode)) 重定向到显示 json 数据的页面

如何解决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 举报,一经查实,本站将立刻删除。