ajax表单提交 - >收到来自php

时间:2016-07-07 10:38:21

标签: php jquery ajax

我一直在阅读有关类似病例的多个主题,但即使是现在我仍然无法正确完成。

我想做什么 基本上,即我的表单允许用户更改其登录名(简单地查询数据库)。 PHP脚本看起来像这样:

if(isset($_POST['login'])) {
        $doEdit = $user->editData("login", $_POST['login']);
        if($doEdit) {
            $result = displayInfobox('success', 'Good!');
        } else {
            $result = displayInfobox('warning', 'Bad!');
        }   
    } else {
        $error = 'Bad!';
        echo $error;
    }

displayInfobox只是一个带有类的div,即成功和内容 - 好!。

现在我想通过AJAX发送此表单并显示$ result而不重新加载页面。

HTML:

<form id="changeLogin" method="post" class="form-inline" action="usercp.php?action=editLogin">
        <label for="login">Login:</label><br />
        <div class="form-group ">
            <input type="text" class="form-control" name="login" id="login" required>
            <input type="submit" value="Zmień"  class="btn btn-primary">
        </div>
    </form>

最后 - 我的jquery / ajax:

$("#changeLogin").submit(function(e) {

  var postData = $(this).serializeArray();
  var formURL = $(this).attr("action");
  $.ajax({
    url: formURL,
    type: "POST",
    data: postData,
    success: function(result) {
      alert(result);
    },
    error: function(response) {}
  });
  e.preventDefault();
});

$("#changeLogin").submit();

如果我将“成功”留空,则可行 - &gt;表单是由ajax提交的,登录名已更改,但我没有看到结果消息。否则整页重新加载。 此外,当我点击F5时,表单再次被提交(即使在Ajax中)。

2 个答案:

答案 0 :(得分:1)

我无法添加评论,因为我没有足够的声誉,但......

您应该删除$("#changeLogin").submit();

的最后一行

然后在你的php脚本文件中你应该回显结果,这样你就可以在ajax请求中得到这个结果。在您的成功方法之后,您必须阅读结果并(例如)将其附加到某处以显示成功或错误框

答案 1 :(得分:0)

我认为你可以使用普通按钮而不是提交按钮,只需onclick就可以成为ajax请求,不应该提交表单,祝你好运。