使用Jquery ajax发布表单并获取响应

时间:2014-06-24 16:06:52

标签: javascript php jquery ajax

我使用此代码使用jquery ajax发布表单。 我的问题是我想让PHP代码像这样:

if (isset($_POST[''])) {
// some code here
}

这是javascript代码:

$("button#submit").click( function() { 
  if( $("#username").val() == "" || $("#password").val() == "" )
    $("div#status").html("Please enter your Email");
  else
    $.post( $("#myForm").attr("action"), $("#myForm :input").serializeArray(),function(data) {
              $("div#status").html(data);
            });

    $("#myForm").submit( function() {
       return false;    
    });

});

3 个答案:

答案 0 :(得分:0)

在php文件名中有6个b,但在ajax url中有7个b。

url: "bbbbbbb.php",  <--- 7 b's

bbbbbb.php  <--- 6 b's

另外,除了成功之外,你也应该有错误,这样你才能看到错误。

error: function (jqXHR, textStatus, errorThrown) {
   alert(textStatus);
}

答案 1 :(得分:0)

如果您测试了代码,并且php部分工作正常,但是您无法在jquery中获得响应,那么,您应该检查您的PHP代码(它应该是这样的):

if (isset($_POST[''])) {
$data = "";
// some code here to fill $data
echo $data; // this is the actual response to the jquery interface.
}

答案 2 :(得分:0)

尽管缺乏实际问题,但这里仍然是一个答案。

第一个问题是javascript在工作时不会完成它应该做的完整工作。 javascript代码似乎想要阻止通过提交事件手动提交表单。您可能希望重新组织javascript,如下所示:

$("#myForm").submit( function() {
   return false;    
});

$("button#submit").click( function() { 
  if( $("#username").val() == "" || $("#password").val() == "" ) {
    $("div#status").html("Please enter your Email");
  } else {
    $.post( $("#myForm").attr("action"), $("#myForm :input").serializeArray(),function(data) {
      $("div#status").html(data);
    });
  }
});

此外,您可能希望在jquery中查看现代事件观看的使用情况以及.on()的使用情况。即$("#myForm").on("submit", function() {});。但这不是这篇文章的重点。

至于PHP代码,我们推断您有以下HTML表单:

<form action="login.php" id="myForm">
    <label for="username">Username: </label>
    <input type="text" id="username" name="username" />
    <label for="password">Password: </label>
    <input type="password" id="password" name="password" />
    <button type="submit" id="submit" name="submit" value="submit">Submit</button>
</form>
<div id="status">Please provide username and password to login</div>    

在login.php中,你会有

if (!empty($_POST)) {
    if (isset($_POST['submit']) && $_POST['submit'] == 'submit') {
        // validate $_POST contains username and password
        ...

        // sanitize username and password
        $username = sanitize($_POST['username']);
        $password = sanitize($_POST['password']);

        // do my processing
        // doLogin returns true for successful login, or message contain error string
        $result = doLogin($_POST['username'], $_POST['password']);

        if ($result === true) {
           echo 'You have successfully logged in';
        } else {
           echo $result;
        }
    } else {
        echo 'Unknown form action';
    }
} else {
    // do GET processing 
}

有了这个,只需回显你想要出现在div#状态的响应。