用jq发送请求到后台,然后后台返回数据,可是就是取不到数据为什么!?
谁能帮一下啊!我真的一天 办法都没有,我只有这么点儿分数
帮帮忙吧各位js代码:
function creatXMLhttp() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLhttp");
    }
    else {
        xmlHttp = new XMLHttpRequest();
    }
}$(document).ready(function() {
    creatXMLhttp();
    $.ajax({
        type: "GET",
        url: "Handler.ashx",
        dataType: "json",
        success: function(strval) {
            var len = strval[i].length;
            var obj = document.getElementById("pp");
            var chdobj = document.createElement("table");
            obj.insertBefore(chdobj, null);
            var i;
            for (i = 0; i < len; i++) {
                var trobj = document.createElement("tr");
                chdobj.insertBefore(trobj, null);
                var tdobj = document.createElement("td");
                trobj.insertBefore(tdobj, null);
                text1 = document.createTextNode(strval.CategoryID[i]);
                text2 = document.createTextNode(strval.ProductName[i]);
                tdobj.insertBefore(text1);
                tdobj.insertBefore(text1);
            }
        }
    });
}
)
Handler.ashx.cs代码:public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        string constr = @"Data Source=admin-7641acc2c\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=;Pooling=true";
        SqlConnection sqlcon = new SqlConnection(constr);
        sqlcon.Open();
        string strsql = "select CategoryID, ProductName from products";
        SqlCommand sqlcom = new SqlCommand(strsql, sqlcon);
        SqlDataAdapter adapter = new SqlDataAdapter(sqlcom);
        DataSet dt = new DataSet();
        adapter.Fill(dt);
        string jsonresult = JsonConvert.SerializeObject(dt);
        context.Response.Write(jsonresult);
        context.Response.End();
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }}
hml代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
    <script type="text/javascript" src="jsonevent.js"></script>
     <script type="text/javascript" src="json2.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="pp">
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   


    你怎么用jQuery有用xmlHttp的ajax。
    娶不到值可能是服务器没有返回值,或请求的地址不对;
    还有就是context.Response.Write(jsonresult);这里有没有正确的在页面输出json的字符串。
    在浏览器请求这样页面看看有没有在页面输出字符串,没有就错的。
      

  2.   

    楼主你是不是jquery和ajax重复使用了,他们有时使用一个就可以了,getJson不用ajax就可以取到值的
      

  3.   


    $(document).ready(function() {
    $.getJson({
            type: "GET",
            url: "Handler.ashx",
            dataType: "json",
            success: function(strval) {
                strval = xmlHttp.responseText;
                var len = strval.length;
                var obj = document.getElementById("pp");
                var chdobj = document.createElement("table");
                obj.insertBefore(chdobj, null);
                var i;
                for (i = 0; i < len; i++) {
                    var trobj = document.createElement("tr");
                    chdobj.insertBefore(trobj, null);
                    var tdobj = document.createElement("td");
                    trobj.insertBefore(tdobj, null);
                    text1 = document.createTextNode(strval.CategoryID[i]);
                    text2 = document.createTextNode(strval.ProductName[i]);
                    tdobj.insertBefore(text1);
                    tdobj.insertBefore(text1);
                }
            }
        });
    }
    )我改成这样它提示对象不支持此方法啊
    这又是为什么?
    刚刚的确是重复使用了,但是这样又该怎么写?
      

  4.   

    我直接把那段cs代码放到aspx页面上,是有一个json格式的值抛出来的,但是js中取不到好像
      

  5.   

    $(document).ready(function() {
    $.getJson(
           "Handler.ashx",
            "",
            function(strval) {
                strval = xmlHttp.responseText;
                var len = strval.length;
                var obj = document.getElementById("pp");
                var chdobj = document.createElement("table");
                obj.insertBefore(chdobj, null);
                var i;
                for (i = 0; i < len; i++) {
                    var trobj = document.createElement("tr");
                    chdobj.insertBefore(trobj, null);
                    var tdobj = document.createElement("td");
                    trobj.insertBefore(tdobj, null);
                    text1 = document.createTextNode(strval.CategoryID[i]);
                    text2 = document.createTextNode(strval.ProductName[i]);
                    tdobj.insertBefore(text1);
                    tdobj.insertBefore(text1);
                }
            }
        );
    }
    )或许这样写是对的?
    可是第二个参数该怎么写?我没有要向服务器发送的参数啊,我只是单纯的取而已