开发者社区> 问答> 正文

Ajax调试问题

success无法调用问题

首先是我写的Ajax请求的函数
写的是对的,数据成功发送,也返回了我要的数据
但是在success中断了n个点都停不下来

 function UpdateBookCount(bid, count) {
     $.ajax({
         //===请求地址===
         url: "ashx/UpdataBookCount.ashx",
         //===请求设置===
         data: { bid: bid, count: count },//传输数据,可以是字符串,也可以是json
         success: function (data) {//请求成功时的回调函数,success(data, textStatus, jqXHR)
             switch (data.statecode) {
                 //statecode
                 //1-----成功
                 //2-----异常
                 //3-----用户未登入
                 case 1:
                     console.log("ok");
                     break;
                 case 2:
                     alert("后端异常");
                     break;
                 case 3:
                     location.href = "/FontPage/UserLogin.ashx";
                     break;

                 default:
             }
         },
         type: "post",//请求方法
         dataType: "json",//返回的数据类型
         cache: false,//是否使用缓存,(默认: true,dataType为script和jsonp时默认为false)  
         contentType: "application/x-www-form-urlencoded"//发送信息至服务器时内容编码类型,这里是默认值
     })
 }

这是调用Ajax请求函数的一个地方

 $(".imgJia").click(function () {
     var count = $(this).siblings(".txtCount").val();
     count++;
     $(this).siblings(".txtCount").val(count);
     //计算下总价
     CountTotalMoney();
     //数据库更新
     var bid = $(this).siblings(".bid").val();
     UpdateBookCount(bid, count);
 });

我再另一个页面也写过几乎一摸一样的Ajax函数(url,data不同),但是它却能断点成功.对了还有这个页面的Ajax函数是写在一个按钮点击事件中的,不知道是不是这个原因

这是另一个页面的Ajax

function BtnBuyClickEvenBind() {
    $("#btnBuyBook").click(function () {
        $.ajax({
            //===请求地址===
            url: "ashx/BuyBook.ashx",
            //===请求设置===
            data: { id: "<%=BookModel.Bid%>",price:"<%=BookModel.PriceNew%>",lastUrl:location.href },
            success: function (data) {//请求成功时的回调函数,success(data, textStatus, jqXHR)
                switch (data.stateCode) {

                    //1-----添加成功
                    //2-----用户未登入
                    //3-----未知错误
                    case 1:
                        alert("ok");
                        break;
                    case 2:
                        location.href="/FontPage/UserLogin.aspx";
                        break;
                    case 3:
                        alert("未知错误");
                        break;
                }
            },
            type: "post",//请求方法
            dataType: "json",//返回的数据类型
            cache: false,//是否使用缓存,(默认: true,dataType为script和jsonp时默认为false)  
            contentType: "application/x-www-form-urlencoded"//发送信息至服务器时内容编码类型,这里是默认值
        });
        return false;
    });
}

展开
收起
小旋风柴进 2016-05-27 08:23:32 2318 0
1 条回答
写回答
取消 提交回答
  • 由于你两个地方调用的 URL 不同,所以不能保存是返回的同一个数据,就可能存在一个成功另一个失败的情况。失败的情况下你是不可能在进入 success 的。

    但是你说数据是返回出来了的,那就说明,在调用 URL 这一段没有错。但是有可能出现另个一错误,就是在解析 JSON 的时候。因为你的 dataType: "json",所以得到数据之后还有一个 $.parseJSON 解析过程。这个过程中要求传入的 JSON 必须是标准的 JSON,而不是 javascript 对象。关于 JSON 的标准可以参考 http://json.org/

    为了捕捉错误,你需要加入 error 事件。

    $.ajax({
        url: "xxx",
        // ......
        success: function(json) {
            // .....
        },
        error: function(jqXhr, textStatus, error) {
            // ......
        }
    });

    在 error 中,如果是解析错误,textStatus 的值应该是 parsererror。当然,目前只是猜测,并没确定是解析错误,所以你可以跟踪调试一下看看。

    2019-07-17 19:16:53
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
WEB浏览器中即将发生的安全变化 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载