2011-10-26 148 views
0

我编写了一个通常的jQuery + AJAX代码,但它不工作,我真的不gettinh为什么! 这是我的代码不能正常工作的一部分:

    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(“passed = /”);

我知道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; 
     }  
    } 
    ?> 

回答

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蜻蜓或WebKit的网络督察或任何开发工具,无论你的浏览器'使用并点击'网络'选项卡,然后您将能够看到所做的每个请求,并确保发送了2个请求。

+0

哦!我现在很尴尬......我不敢相信我输错了事情,对不起家伙!谢谢大家。 大括号关闭错误我删除了编辑帖子时,它是好的,但成功真的让我!我输入它,它变得大胆(netbeans),所以我只是忽略它! 再次感谢大家! – IPValverde

1

它看起来像你错过了上第二AJAX调用你的“错误”事件右大括号。

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

1

我想你错误地键入了你的ajax选项之一:输入“Success”而不是“succes”