【问题标题】:AJAX form submission - No data returnedAJAX 表单提交 - 未返回数据
【发布时间】:2015-09-21 02:42:29
【问题描述】:

表格:

<form action="" id="register" method="post">
    <input type="text" placeholder="eg. John">
    <input type="text" placeholder="eg. Appleseed">
    <input type="text" placeholder="youremail@domain.com">
</form>

JS:

$('form#register').on('submit',function (e) {
    $.ajax({
        url: 'submit.php',
        cache: false,
        type: 'POST',
        context: this,
        data : $(this).serialize(),
        success: function(json) {
            console.log("json: " + json);
        }
    });
    e.preventDefault();
});

PHP:

$formData = json_encode($_POST);
echo print_r($formData,1);

...填写表单并点击提交后,它确实提交表单没有错误,但返回的数据(JSON)为空:

json: []

我做错了什么?

【问题讨论】:

  • 你需要做一些基本的调试。查看开发人员工具的“网络”选项卡。查看发送到submit.php 的请求。它是否包含您期望的表单数据?看看回复。它是否包含您期望的数据?
  • 使用开发者工具网络标签。检查哪些数据提交给服务器,哪些数据从服务器返回。
  • 我能够重现这一点的唯一方法是,如果表单中没有可序列化的数据(您尚未与我们共享)。
  • Chrome 中的网络标签显示:Request URL:http://localhost:5757/submit.php Request Method:POST Status Code:200 OK
  • 哦,尝试将 name 属性也设置为您的 HTML 标签!

标签: javascript php jquery ajax json


【解决方案1】:

1:-

$formData = json_encode($_POST); echo print_r($formData,1);

应该是:-

$formData = json_encode($_POST);
echo $formData;

2.您的表单字段中没有name 属性。请提供,否则serialize() 将无法正常工作。

【讨论】:

  • 返回数据和回显数据有什么区别?
  • 他同时使用了echo and print_r,这是不正确的
【解决方案2】:

这是因为您没有在字段中使用name 属性

serialize() 

在您的表单中需要name 字段

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2015-01-03
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多