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";

}
展开
 我来答
既略愿宝升2621
推荐于2016-11-18 · TA获得超过129个赞
知道答主
回答量:180
采纳率:0%
帮助的人:105万
展开全部
要弄明白~什么是异步

当你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,
.......
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xtsanglei
2011-10-21 · 超过19用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:70.1万
展开全部
ajax_addAction()这个函数也没有参数传进来啊,怎么去搜索库存呢?
况且你写的是个函数,那页面也没见有执行他的地方
追问
$.ajax 那里的 data 传ID了,把PHP代码的那个 关于模板的代码删掉 就没问题了,也不知道怎么回事。  ajax购买
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式