如何在Ajax中获得错误响应?

时间:2015-07-19 12:23:59

标签: javascript java jquery ajax

我正在尝试将数据添加到购物车(使用)Ajax jQuery,现在我添加了一个主键约束,我想在违反约束时获取jQuery中的错误消息:

 function add()
       {
        $(document).ready(function() 
        {
        $('#addtocart').submit(function() {
           //$('#add-button').prop('disabled',true);
    var user = $('#user').val();
           var pid = $('#pid').val();
        $.ajax({
        type:       "post",
        url:        "/devilmaycry/register?action=addtocart",
        data:       {pid:pid ,user:user},
        success:    
                   function() 
                    {
                          alert("Item has been added to cart");
                },
                  error:
                     function() 
                    {
                          alert("Item already present in the cart");
                } 
              });
     return false;
   });

        });
       }   

错误函数永远不会运行,数据库中的功能运行正常但我没有在Ajax中看到错误消息。

这是Java代码:

public int addintocart(String user,int pid)
{
 try
  {
   conn = obj.connect();
   String sql="insert into cart(userid,product_id,quantity)  values(?,?,?)"; 
   ps1 = conn.prepareStatement(sql);
        ps1.setString(1,user);
        ps1.setInt(2,pid);
        ps1.setInt(3,1);

         ps1.executeUpdate();

  }
    catch(SQLException e)
    {
        e.printStackTrace();
    }
    catch(Exception k)
    {
        k.printStackTrace();
    }

   return x;
 }

出了什么问题?

2 个答案:

答案 0 :(得分:0)

您必须将错误作为来自Java的servlet响应发送回来。以下是一个示例:How to return Java Exception info to jQuery.ajax REST call?

此外,您缺少ajax错误函数中的一些参数。这可能是另一个问题。查看http://api.jquery.com/jquery.ajax/您应该评估错误并提供相应的消息。

答案 1 :(得分:0)

那个错误代码永远不会起作用。只有在无法建立连接或URL不存在时,才会运行AJAX的onerror事件。您必须从服务器返回一些表示成功或失败的内容。

我会这样做。

PHP(将此代码转换为JAVA):

if(success){
    die(1);
} else {
    if(notyetincart){
       die(0);
    } else {
        die(2);
    }
}

然后Jquery编码:

function add()
       {
        $(document).ready(function() 
        {
        $('#addtocart').submit(function() {
           //$('#add-button').prop('disabled',true);
    var user = $('#user').val();
           var pid = $('#pid').val();
        $.ajax({
        type:       "post",
        url:        "/devilmaycry/register?action=addtocart",
        data:       {pid:pid ,user:user},
        success:    
                   function(response) 
                    {
                          if(reponse==="1")
                          alert("Item has been added to cart");
                          else if(reponse==="0")
                          alert("Item could not be added to cart");
                          else alert("Item already present in the cart");

                },
                  error:
                     function() 
                    {
                          alert("Item could not be added to cart due to poor network connection");
                } 
              });
     return false;
   });

        });
       }

希望这有帮助