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

时间:2013-09-18 00:38:20

标签: javascript php jquery html ajax

我正在尝试使用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');
            }
        });
    });
  });

这是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');
    }
}

这是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>

5 个答案:

答案 0 :(得分:25)

@Musa,在你提到的

之上
  

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

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

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

答案 1 :(得分:6)

原来我必须将async: false添加到$ .ajax函数中。它没有从php得到回复。

答案 2 :(得分:2)

我在那里遇到了同样的问题和发现。问题一直是我的jQuery的版本,我使用了jquery版本(jquery-1.10.2.js),但这个版本不是Ajax stablish。所以,我改变(jquery-1.8.2.js)的版本,这个奇迹出现了。

祝你好运!

答案 3 :(得分:1)

您应指定状态代码200以获得成功响应。

<?php
http_response_code(200);
?>

见这里:http://php.net/manual/en/function.http-response-code.php

答案 4 :(得分:1)

第一个解决方案

尝试像这样删除 js 文件中的 dataType

$(document).ready(function() {
    $('.button').click(function() {
        var form = $(this).closest('form');
        $.ajax({
            type: "POST",
            url: form.attr('data'),
            data: form.serialize(),
            success: function (response) {
                alert('something');
            },
            error: function() {
                alert('fail');
            }
        });
    });
});

第二种方案

像这样向 AJAX 发送一个真正干净的 JSON:

PHP

if(isset($_POST['username'])) {
    $user = new Users;
    $user->cleanInput($_POST['username'], $_POST['password']);
    if($user->insertUser()) {
        $error = [
            "title"=> 'true',
            "body"=> 'some info here ... '
        ];
        echo json_encode($error);
    } else {
        $error = [
            "title"=> 'false',
            "body"=> 'some info here ... '
        ];
        echo json_encode($error);
    }
}

JavaScript

$(document).ready(function() {
    $('.button').click(function() {
        var form = $(this).closest('form');
        $.ajax({
            type: "POST",
            url: form.attr('data'),
            dataType: 'json',
            data: form.serialize(),
            success: function (data) {
                let x = JSON.parse(JSON.stringify(data));
                console.log(x.title);
                console.log(x.body);
            },
            error: function() {
                //code here
            }
        });
    });
});