问题描述
我正在尝试将数据添加到使用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;
}
怎么了?
1楼
您必须将错误作为Java的Servlet响应发送回去。 这是一个示例:
另外,您在ajax错误函数中缺少一些参数。 这可能是另一个问题。 查看您应该评估该错误并显示相应的消息。
2楼
该错误代码将永远无法工作。 仅当无法建立连接或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;
});
});
}
希望这可以帮助