PHP ajax中 success返回值的 问题 刚开始alert(msg) 能返回1, 但是最后结果总出现失败,, 是怎么回事
<scripttype="text/javascript">{literal}functionajax_add(goods_id){$.ajax({url:'index....
<script type="text/javascript">
{literal}
function ajax_add(goods_id){
$.ajax({
url:'index.php?c=index&a=ajax_add',
type:'get',
datatype:'html',
data:'goods_id='+goods_id,
success: function(msg){
alert(msg);
switch (msg){
case 'no_number':
alert("没有库存");
break;
case '1':
alert('添加成功!');
break;
default:
alert('失败');
}
}
});
}
{/literal}
</script>
public function ajax_addAction(){
$goods_id = $_GET['goods_id'];
$model_goods = Common::getModel('goods');
$goods = $model_goods->getGoodsById($goods_id);
//判断是否有库存
if($goods['goods_number']<0){
echo "no_number";
exit;
}
//加入当前商品到购物车
if(!is_object($cart = $_SESSION['cart'])) {
$cart = new CartModel();
}
$cart ->addGoods($goods_id);
$_SESSION['cart'] = $cart;
echo "1";
} 展开
{literal}
function ajax_add(goods_id){
$.ajax({
url:'index.php?c=index&a=ajax_add',
type:'get',
datatype:'html',
data:'goods_id='+goods_id,
success: function(msg){
alert(msg);
switch (msg){
case 'no_number':
alert("没有库存");
break;
case '1':
alert('添加成功!');
break;
default:
alert('失败');
}
}
});
}
{/literal}
</script>
public function ajax_addAction(){
$goods_id = $_GET['goods_id'];
$model_goods = Common::getModel('goods');
$goods = $model_goods->getGoodsById($goods_id);
//判断是否有库存
if($goods['goods_number']<0){
echo "no_number";
exit;
}
//加入当前商品到购物车
if(!is_object($cart = $_SESSION['cart'])) {
$cart = new CartModel();
}
$cart ->addGoods($goods_id);
$_SESSION['cart'] = $cart;
echo "1";
} 展开
2个回答
展开全部
要弄明白~什么是异步
当你ajax提交后台的时候,这时候你的前台页面的js还是照常运行,
所以还没等你ajax走完,就已经先把 alert("返回值为" tep);给执行了
你可以把alert("返回值为" tep);放入
success:function(msg)中
你无非就是想在msg为true的时候弹-4么,
直接把return -4 改为 alert("返回值为-4")
修改后的
success:function(msg)
{
alert("msg的值" msg);
if(msg=="true")
{
alert("返回值是 -4")
}
else
{
alert("返回值是 1") ;
}
}
});
}
或者什么都不要修改,
在你ajax请求的构造参数中加上:
async:false; //取消异步请求,这样做就完全失去了ajax想要的效果了~建议不要这么干~
即:
$.ajax({
url:"../JqueryCheckUser.do",
type:"post",
dataType:"html",
async:false,
.......
当你ajax提交后台的时候,这时候你的前台页面的js还是照常运行,
所以还没等你ajax走完,就已经先把 alert("返回值为" tep);给执行了
你可以把alert("返回值为" tep);放入
success:function(msg)中
你无非就是想在msg为true的时候弹-4么,
直接把return -4 改为 alert("返回值为-4")
修改后的
success:function(msg)
{
alert("msg的值" msg);
if(msg=="true")
{
alert("返回值是 -4")
}
else
{
alert("返回值是 1") ;
}
}
});
}
或者什么都不要修改,
在你ajax请求的构造参数中加上:
async:false; //取消异步请求,这样做就完全失去了ajax想要的效果了~建议不要这么干~
即:
$.ajax({
url:"../JqueryCheckUser.do",
type:"post",
dataType:"html",
async:false,
.......
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询