$ .ajax()与ajax无法正常工作

时间:2011-10-26 15:14:54

标签: php jquery ajax

我正在编写一个通常的jquery + AJAX代码,但它不起作用,我真的不知道为什么! 这是我的代码无法正常工作的部分:

                    var data = $("#data_res").val();
                    var infoData = data.split("/");
                    var dataDb = infoData[2]+"-"+infoData[1]+"-"+infoData[0];

                    $.ajax({
                        type: "POST",
                        url: "reserva_ajax.php",
                        data: {action: 1, data: dataDb},
                        success: function(retorno)
                        {
                            var qtd = parseInt(retorno, 10);
                            alert("Qtd: "+qtd);
                            if(qtd > 0) {
                                //for now, qtd is always 0
                            }
                            else{
                                var id = $("#id_func").val();
                                var obs = $("#obs_res").val();
                                alert("id: "+id+" | obs: "+obs+" | dataDB: "+dataDb);
                                $.ajax({
                                    type: "POST",
                                    url: "reserva_ajax.php",
                                    data: {action: 1, data: dataDb},
                                    succes: function(a)
                                    {  
                                        alert("sucess! a="+a);
                                    },
                                    error: function(b)
                                    {
                                        alert("Error!");
                                });
                                alert("passed =/");
                            }
                        },
                        error: function()
                        {
                            alert("Erro! Try again.");
                        }

也许在另一个ajax请求中成为ajax请求的事实会导致错误。但我认为这不是问题,因为ajax只在第一个完成后执行。

第一个ajax运行正常,然后显示“Qtd:0”。然后代码进入else条件(因为qtd不大于0),显示第二个警报:     alert(“id:”+ id +“| obs:”+ obs +“| dataDB:”+ dataDb); 一切都好。

然而,我遇到了问题!执行ajax(我认为)但它不执行成功块既不是错误块,所以打印的警告是:     alert(“传递= /”);

我知道ajax是异步的,成功和错误警报可能会在“传递”之后执行,但它们永远不会被执行。

请有人可以帮助我吗?!

php代码是:

    <?php
    include_once 'classes/reserva_class.php';

    if(isset($_POST["action"]))
    {
        $action= (int) $_POST["action"];

        switch($action)
        {
            case 1:
                echo Reserva::getQtdReservasData($_POST["data"]);
                break;
            case 2:
                echo "=)";
                break;
        }    
    }
    ?>

3 个答案:

答案 0 :(得分:1)

看起来您在第二次AJAX调用时错过了“错误”事件的结束大括号。

如果这不能解决问题,请尝试添加“完成”事件以查看您的ajax页面返回的内容,如果您从“错误”或“成功”中得不到任何回复。

答案 1 :(得分:1)

您错过了}动作回调中的结束error,而您的success回调实际上被称为succes。它应该是这样的:

$.ajax({
    type: "POST",
    url: "reserva_ajax.php",
    data: {action: 1, data: dataDb},
    success: function(a)
    {  
        alert("sucess! a="+a);
    },
    error: function(b)
    {
        alert("Error!");
    }
});

顺便说一句,你不应该'认为'你的ajax请求正在被执行...弹出Opera Dragonfly或WebKit的Web Inspector或你正在使用的任何浏览器的任何开发者工具并点击'Network'选项卡,您将能够看到每个请求,并确保发送2。

答案 2 :(得分:1)

我认为你错误地输入了一个ajax选项:输入“Success”而不是“success”