$ .ajax提交表单,有时会获得成功,有时会出错

时间:2015-04-14 16:33:02

标签: javascript php jquery ajax forms

我有一个简单的登录表单,通过$ .ajax函数传递给php。 问题是在localhost上$ .ajax函数结果有时会成功,有时会出错。我获得成功的大部分时间是在使用chrome调试器的时候。 当我在服务器上检查文件时,我只得到$ .ajax的错误结果。

提前致谢..

表单代码:

<form method="post" action="">
        <h3>Login</h3>
        <label>User Name:<input type="text" name="uname" id="uname"></label>
        <br>
        <label>Password:<input type="password" name="pass" id="pass"></label>
        <br>
        <button type="submit" id="submit">login</button>
    </form>

$ .ajax代码

  $("#submit").click(function(){
                $.ajax({
                    cache: false,
                    url: 'php/login.php',
                    type: 'POST',
                    dataType: 'json',
                    data: {
                        uname: $('#uname').val(),
                        pass: $('#pass').val()
                    },

                    success: function (data) {
                        Cookies.set('uid', data[0].uid);
                        alert("test");
                    },
                    error: function (xhr, status) {
                        alert("Sorry, there was a problem!");
                    },
                });
            })

php代码

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

require_once 'config.php';
$conn = mysqli_connect($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);

$uname=mysql_real_escape_string($_POST['uname']);
$pass=md5(mysql_real_escape_string($_POST['pass']));

$result = $conn->query("SELECT * FROM users WHERE uname LIKE '$uname' AND upass LIKE '$pass'");     

    $outp = "[";
    while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
            $outp .= '{"uid":"'.$rs["uid"].'"}';
        }
        $outp .="]"; 

$conn->close();
echo($outp);

1 个答案:

答案 0 :(得分:1)

您的表单可能仍在尝试提交正常方式,因为您没有正确拦截它。

在表单中添加ID。

<form id="myForm" method="post" action="">

将您的代码更改为以下内容并试一试。我们正在做的是拦截表单提交并阻止默认操作。

$("#myForm").submit(function(event){
    $.ajax({
        cache: false,
        url: 'php/login.php',
        type: 'POST',
        dataType: 'json',
        data: {
            uname: $('#uname').val(),
            pass: $('#pass').val()
        },

        success: function (data) {
            Cookies.set('uid', data[0].uid);
            alert("test");
        },
        error: function (xhr, status) {
            alert("Sorry, there was a problem!");
        },
    });
    event.preventDefault();
});