var jsTime = "2012-05-08 12:00";
    //调用后台方法 js时间检索服务器,是否有数据
    $.ajaxSetup({ async: false, cache: false });
    $.ajax({
        type: "post",
        dataType: "json",
        data: "{jsTime:'" + jsTime + "'}",
        contentType: "application/json; charset=utf-8",
        url: "navigationbars.ascx/getMemInfo",
        success: function (data) {
            if (data.d != "") {
                //截取该对象,获取字符串中的Contents,mid
                var entity = data.d;
                var pairs = entity.split(',');
                var mid = pairs[0].value;
                var content = pairs[1].value;
                alert(mid);
                alert(content);
            }
        },
        error: function () {
            alert("ajax方法Error!");
        }
    });
这是前台-----------------------------------------------------------------------------------------------------
    [WebMethod]
    public static string getMemInfo(string jsTime){
        //调用方法,返回数据
        OA.BLL.MEMORANDUM mm = new OA.BLL.MEMORANDUM();
        DataSet ds = mm.GetList("start_time ='" + jsTime+"'");
        if (ds != null)
        { 
            OA.Model.MEMORANDUM memo = new OA.Model.MEMORANDUM();
            //ds转化成对象
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    memo.memorandum_id = Convert.ToInt64(dr["memorandum_id"]);
                    memo.contents = dr["contents"].ToString();
                }
            //对象转换成字符串,用_ ,都行
            return memo.memorandum_id.ToString() + "," + memo.contents.ToString();
        }
        return "";
    }这是底层-----------------------------------------------------------------------------------------
为什么前台调用这个方法会一直ERROR,后台代码测试正常。是ajax里面的方法执行有问题。请大神帮忙看看,另外还想问一个问题,如果再遇到ajax方法出错的情况下,应该怎么去调试错误。

解决方案 »

  1.   

    后台返回的json数据有问题吧。。认真仔细检查下数据。
      

  2.   

    帮助时这样写的:
     请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。你可以打印下错误信息看看
      

  3.   

    用firefox的firebug调试,如何调试网上很多资料.看ajax错误可看(均在firebug中显示):
    $.ajax({
    url : "/education2/json/getSearchQuestionknowledgeview",
    type: "post",
    data : params,
    dataType : "json",
    cache : false,
    error : function(textStatus, errorThrown) {
    alert("系统ajax交互错误: " + textStatus);
    }, 
    .....调试停在alert("系统ajax交互错误: " + textStatus);
    处,然后在firebug右边的监控窗口看"textStatus",展开看有详细错误细节.errorThrown中有错误类型.
      

  4.   

    error: function (xhr, type, exception) {
                    Alert(xhr.responseText, "Failed");
                }调试看下三个参数的值,目测错误应该是parseerror
      

  5.   

      data: "{jsTime:'" + jsTime + "'}",==>  data: {'jsTime': jsTime },
    单步调试一下
      

  6.   

    个人建议用  chorm去看下,f12一点便知
      

  7.   


    CHROME 一样不走AJAX方法直接跳掉。
    我直接把
    url: "navigationbars.ascx/getMemInfo",
    里面的navigationbars.ascx换了个aspx地址的后台里面写,已经解决了。可能ajax调用用户控件里面的地址方法会出错。