首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$.ajax提交表单,有时成功,有时出错

问$.ajax提交表单,有时成功,有时出错
EN

Stack Overflow用户
提问于 2015-04-14 16:33:01
回答 1查看 98关注 0票数 1

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

提前谢谢..。

表单代码:

代码语言:javascript
复制
<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代码

代码语言:javascript
复制
  $("#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代码

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 16:41:27

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

在表单中添加一个Id。

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

将您的代码更改为下面的代码并尝试一下。我们要做的是拦截表单提交并防止默认操作。

代码语言:javascript
复制
$("#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();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29632711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档