jquery .ajax总是返回错误 - 数据被添加到数据库

T0w*_*tuM 7 html javascript php ajax jquery

我正在尝试使用jquery ajax调用将用户添加到数据库.用户可以很好地添加到数据库中,但是ajax总是返回错误.我不知道如何检索特定的错误.下面是我的代码,表单,php和jquery.

这是jquery

$(document).ready(function() {

    //ajax call for all forms. 
    $('.button').click(function() {
        var form = $(this).closest('form');
        $.ajax({
            type: "POST",
            url: form.attr('data'),
            dataType: 'json',
            data: form.serialize(),
            success: function (response) {
                alert('something');
            },
            error: function() {
                alert('fail');
            }
        });
    });
  });
Run Code Online (Sandbox Code Playgroud)

这是PHP

<?php
include 'class_lib.php';

if(isset($_POST['username'])) {
    $user = new Users;
    $user->cleanInput($_POST['username'], $_POST['password']);
    if($user->insertUser()) {
        echo json_encode('true');
    } else {
        echo json_encode('false');
    }
}
Run Code Online (Sandbox Code Playgroud)

这是HTML

<div id='newUser' class='tool'>
    <h3>New User</h3>
    <form method='post' name='newUser' data='../php/newUser.php'>
        <span>Username</span><input type='text' name='username'><br>
        <span>Password</span><input type='password' name='password'>
        <input type='submit' name='submit' class='button' style='visibility: hidden'>
    </form>
    <span class='result'> </span>
</div>
Run Code Online (Sandbox Code Playgroud)

Vic*_*cer 28

@Musa,你刚才提到的

我的猜测是它的解析错误,尝试删除dataType:'json',看看它是否有效

你完全解决了我遇到的问题!我的ajax帖子请求与上面类似,它只是继续回到"错误"部分.虽然我使用firebug进行了检查,但状态为200(ok)并且没有错误.

删除'dataType:json'为我解决了这个问题.非常感谢!


T0w*_*tuM 6

事实证明我必须添加async: false到$ .ajax函数.它没有得到回复的PHP.


nod*_*man 5

我知道这是一个老问题,但我刚刚遇到了这样的奇怪情况(直接执行时 jquery ajax 返回成功,但附加到按钮时返回错误,即使服务器响应为 200 OK

form并发现在标签内放置按钮会导致 JQuery 总是返回错误。只需更改form标签即可div解决问题。

我相信 JQuery 假设通信应该是形式编码的,即使你说它是application/json.

尝试将按钮移到表单外,看看会发生什么......


skm*_*asq 1

您应该指定状态代码 200 表示成功响应。

<?php
http_response_code(200);
?>
Run Code Online (Sandbox Code Playgroud)

请参阅此处: http: //php.net/manual/en/function.http-response-code.php