ajax请求ashx,返回值总是空值

时间:2022-11-15 10:30:01
$("#btn1").bind("click", function () {
    $.ajax({
        type: "POST",
//        dataType: "text",
        async: false,
        cache: false,
        url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",
        success: function (data) {
            alert(data);
            if (data == "a") {
                alert("数据库查询成功");
            } else if (data == 0) {
                alert("数据库查询不成功")
            } else {
                alert("都没有什么");
            }
        }
        });
});



public class NewsAddHandler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string Operation = context.Request.Form["op"];
        if ("PageStartLoading".Equals(Operation))
        {
            string ToDo = context.Request.Form["do"];
            if ("LoadingList".Equals(ToDo)) {
                //开始取出NewsList里面已有数据
                string ListSql = "select * from NewsList where delsign=1";
                DataSet ListDS = manager.connstr.DataAdapter(ListSql);
                if (ListDS.Tables.Count > 0)
                {
                    string ListJson = FormatToJson.ToJson(ListDS);
                    context.Response.Clear();
                    context.Response.Write(1);
                    context.Response.End();
                }
                else
                {
                    context.Response.Write(2);
                }
            }
        }
}

25 个解决方案

#1


debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试

#2



 你代码获取的是 do 
string ToDo = context.Request.Form["do"];


而你js里面传的参数是 todo

 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",

#3


引用 1 楼 zhujiazhi 的回复:
debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试


的确是什么都没做,但是我改成QueryString了,还是取不到op

#4


引用 2 楼 aig003 的回复:

 你代码获取的是 do 
string ToDo = context.Request.Form["do"];


而你js里面传的参数是 todo

 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",


这个问题的确是存在,谢谢。
但是不能解决我问的问题。
十分感激

#5


引用 1 楼 zhujiazhi 的回复:
debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试

断点看出来时那条语句报错的?

#6


把Jquery,Ajax的error:function(e)
{
alert(e);
}
加上看报什么错没。。

#7


context.Request.Form换成 context.Request.QueryString,重新生成下在试试,其他的没什么问题

#8


没进到if条件里去把。。调试下看看

#9


我对jQuery不熟悉,所以Ajax我都是用自己写的JavaScript封装

我看了下楼主的代码
$.ajax({         type: "POST", 

我分析了下,楼主,你尝试换 type: "GET",   然后在服务端改成Quering["od"].ToString()来获取一下看看

如果能获取到值,则说明可能是使用POST方式时,不能通过URL带值

#10


监视下请求看看状态码

#11


type: "POST"改成type: "GET",context.Request.Form改成context.Request.QueryString
你用GET传参的方式去POST,可能取不到值吧

#12


  type: 'post',
 {  todo : ”LoadingList“ },

#13


我前几天也在做这个
我也遇到这个问题 
我的问题出在传值的时候传了个乱码
然后再后台取到的乱码不能查询出对应的数据库数据 
所以返回空..
还有 不要用 ?id=...  这样来传值  
用data:{id:id} 这样 如果是传值乱码的问题 把post改成get试试 只要取到值了  无论是不是乱码 就好解决了
如果有需要你可以回复我  我给你我的代码..

#14


打个断点进去看看

#15


引用 14 楼 a346729576 的回复:
打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

#16


引用 15 楼 lvxinyi123 的回复:
Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。

#17


引用 16 楼 starfd 的回复:
Quote: 引用 15 楼 lvxinyi123 的回复:

Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。
我不会呀-,- 

#18


引用 17 楼 lvxinyi123 的回复:
Quote: 引用 16 楼 starfd 的回复:

Quote: 引用 15 楼 lvxinyi123 的回复:

Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。
我不会呀-,- 
ajax请求ashx,返回值总是空值你不会打断点然后触发那个方法么

#19


       context.Response.End();
去掉。

#20


1.查看url是否正确
2.查看success方法里面的alert是否有弹出消息,没有说明ajax有错误。

#21


  string Operation = context.Request.Form["op"];
string ToDo = context.Request.Form["todo"];

改成

  string Operation = context.Request["op"];
string ToDo = context.Request["todo"];

#22


最简单 直接的方法 打断点 调试就可以了!!!

#23


 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",

 string ToDo = context.Request.Form["do"];

很明显的不匹配,另外你应该是查询参数的方式,怎么能使用Request.Form

#24


我很纳闷你写的代码为什么if不写完呢,这样你不用调试也可以知道代码运行到哪里了呀。

#25


不是应该这样吗:
url: "/AdminLogin/NewsAddHandler.ashx",
data: "n=" + m,

#1


debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试

#2



 你代码获取的是 do 
string ToDo = context.Request.Form["do"];


而你js里面传的参数是 todo

 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",

#3


引用 1 楼 zhujiazhi 的回复:
debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试


的确是什么都没做,但是我改成QueryString了,还是取不到op

#4


引用 2 楼 aig003 的回复:

 你代码获取的是 do 
string ToDo = context.Request.Form["do"];


而你js里面传的参数是 todo

 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",


这个问题的确是存在,谢谢。
但是不能解决我问的问题。
十分感激

#5


引用 1 楼 zhujiazhi 的回复:
debug进去看一下的了,

应该是if ("PageStartLoading".Equals(Operation))这个判断为false了,所以才什么都不做的

换成

string Operation = context.Request.QueryString["op"]

试试

断点看出来时那条语句报错的?

#6


把Jquery,Ajax的error:function(e)
{
alert(e);
}
加上看报什么错没。。

#7


context.Request.Form换成 context.Request.QueryString,重新生成下在试试,其他的没什么问题

#8


没进到if条件里去把。。调试下看看

#9


我对jQuery不熟悉,所以Ajax我都是用自己写的JavaScript封装

我看了下楼主的代码
$.ajax({         type: "POST", 

我分析了下,楼主,你尝试换 type: "GET",   然后在服务端改成Quering["od"].ToString()来获取一下看看

如果能获取到值,则说明可能是使用POST方式时,不能通过URL带值

#10


监视下请求看看状态码

#11


type: "POST"改成type: "GET",context.Request.Form改成context.Request.QueryString
你用GET传参的方式去POST,可能取不到值吧

#12


  type: 'post',
 {  todo : ”LoadingList“ },

#13


我前几天也在做这个
我也遇到这个问题 
我的问题出在传值的时候传了个乱码
然后再后台取到的乱码不能查询出对应的数据库数据 
所以返回空..
还有 不要用 ?id=...  这样来传值  
用data:{id:id} 这样 如果是传值乱码的问题 把post改成get试试 只要取到值了  无论是不是乱码 就好解决了
如果有需要你可以回复我  我给你我的代码..

#14


打个断点进去看看

#15


引用 14 楼 a346729576 的回复:
打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

#16


引用 15 楼 lvxinyi123 的回复:
Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。

#17


引用 16 楼 starfd 的回复:
Quote: 引用 15 楼 lvxinyi123 的回复:

Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。
我不会呀-,- 

#18


引用 17 楼 lvxinyi123 的回复:
Quote: 引用 16 楼 starfd 的回复:

Quote: 引用 15 楼 lvxinyi123 的回复:

Quote: 引用 14 楼 a346729576 的回复:

打个断点进去看看
ASHX是不方便打断点调试的- - 方便调试就不会那么麻烦咯

谁说ashx不方便断点的。。。。。。。。。。。
我不会呀-,- 
ajax请求ashx,返回值总是空值你不会打断点然后触发那个方法么

#19


       context.Response.End();
去掉。

#20


1.查看url是否正确
2.查看success方法里面的alert是否有弹出消息,没有说明ajax有错误。

#21


  string Operation = context.Request.Form["op"];
string ToDo = context.Request.Form["todo"];

改成

  string Operation = context.Request["op"];
string ToDo = context.Request["todo"];

#22


最简单 直接的方法 打断点 调试就可以了!!!

#23


 url: "/AdminLogin/NewsAddHandler.ashx?op=PageStartLoading&todo=LoadingList",

 string ToDo = context.Request.Form["do"];

很明显的不匹配,另外你应该是查询参数的方式,怎么能使用Request.Form

#24


我很纳闷你写的代码为什么if不写完呢,这样你不用调试也可以知道代码运行到哪里了呀。

#25


不是应该这样吗:
url: "/AdminLogin/NewsAddHandler.ashx",
data: "n=" + m,