0

success在我的 AJAX 调用中根本没有触发,我不知道为什么。AJAX 文件中指定的警报都不会弹出。

表格:

<form onsubmit="check_reg();return false;" method="post" name="reg_form" id="reg">
    <label class="error" id="reg_error"></label>
    <label for="login_reg">Login</label>
    <input type="text" name="login" id="login_reg" placeholder="Login">
    <label for="email_reg">Email</label>
    <input type="text" name="email" id="email_reg" placeholder="Email">
    <label for="haslo_reg">Password</label>
    <input type="password" name="password" id="pass_reg" placeholder="Password">
    <button type="submit">Register</button>  
</form>

reg_script.php:

if (!empty($_POST['login']) && !empty($_POST['password']) && !empty($_POST['email'])) {
    $login = $mysqli->real_escape_string($_POST['login']);
    $password = $mysqli->real_escape_string($_POST['password']);
    $email = $mysqli->real_escape_string($_POST['email']);

    if ($mysqli->query("INSERT INTO users (login, password, email) VALUES('$login', '$password', '$email')")) {
        echo "ok";
    } 
    else {
        echo "error";
    }
} 
else {
    echo "empty";
}

AJAX

function check_reg() {
    $.ajax({
        url: 'reg_script.php',
        type: "POST",
        data: "login=" + $('#login_reg').val() + "&password=" + $('#pass_reg').val() + "&email=" + $('#email_reg').val(),
        success: function(result) {
            if (result == 'ok') {
                alert('ok');
            }
            else if (result == 'error') {
                alert('error');
            }
            else if (result == 'empty') {
                alert('empty');
            }
        },
    });
}

任何想法可能是什么问题?

编辑:我应该补充说我使用了本教程: http: //developertips.net/post/display/web/3/dynamic-login-form-with-ajax-php/并设法让登录表单正常工作好吧,只是注册表在起作用。

4

2 回答 2

0

在这里,您使用 POST 请求,但将数据作为用于 GET 请求的查询字符串发送。

使用对象形式的数据:

 data: {'login': $('#login_reg').val() ,'password':$('#pass_reg').val() ,'email':$('#email_reg').val()}

您还可以检查print_r($_POST)您的 php 文件,以便查看数据是否已发布。

因此,在 ajax 中使用以下代码:

function check_reg() {
    $.ajax({
        url: 'reg_script.php',
        type: "POST",
        data: {'login': $('#login_reg').val() ,'password':$('#pass_reg').val() ,'email':$('#email_reg').val()},
        success: function(result) {
            if (result == 'ok') {
                alert('ok');
            }
            else if (result == 'error') {
                alert('error');
            }
            else if (result == 'empty') {
                alert('empty');
            }
        },
    });
}
于 2013-05-16T17:10:46.250 回答
0

改变

<form onsubmit="check_reg();return false;" method="post" name="reg_form" id="reg">
<label class="error" id="reg_error"></label>
<label for="login_reg">Login</label>
<input type="text" name="login" id="login_reg" placeholder="Login">
<label for="email_reg">Email</label>
<input type="text" name="email" id="email_reg" placeholder="Email">
<label for="haslo_reg">Password</label>
<input type="password" name="password" id="pass_reg" placeholder="Password">
<button type="submit">Register</button>  
</form>

至:

<form>
<label class="error" id="reg_error"></label>
<label for="login_reg">Login</label>
<input type="text" name="login" id="login_reg" placeholder="Login">
<label for="email_reg">Email</label>
<input type="text" name="email" id="email_reg" placeholder="Email">
<label for="haslo_reg">Password</label>
<input type="password" name="password" id="pass_reg" placeholder="Password">
<input type="button" onclick="check_reg()">Register</button>  
</form>

这样,您的 HTML 文件将调用您的 check_reg() 然后调用您的 php 文件。您不需要 HTML 文件中的 method=post 等。所有这些信息都已经在你的函数中了。

顺便说一句,您在 check_reg() 函数中的数据属性,我建议您将其更改为 serializeArray() 。

我刚刚意识到的另一件事:

success: function(result) {

结果变量包含来自服务器端 (php) 的错误消息。所以你所要做的就是:

success: function(result) {
             alert(result);
于 2013-05-16T16:45:27.903 回答