jQuery中的ajax如何调用ashx中的静态方法?

jQuery中的ajax://判断该标题是否已存在$("#txtTitle").live("change",function(){$.ajax({type:"Post",... jQuery中的ajax:
//判断该标题是否已存在
$("#txtTitle").live("change", function () {
$.ajax({
type: "Post",
url: "AjaxServer.ashx/TitleExists",
data: "{'Title':'" + $(this).val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { //返回的数据用data.d获取内容
if (data.d != 0) {
$("#lblIsTitle").text("已存在!");
} else {
$("#lblIsTitle").text("");
}
}, error: function () {
alert("判断该标题是否已存在,操作失败");
}
});
});

AjaxServer.ashx.cs:

//根据Title,判断该标题是否已存在
[WebMethod]
public static int TitleExists(string Title)
{
return Convert.ToInt32(BLL.newsBLLClass.TitleExists(Title));
}
原先是ajax直接调用aspx.cs里的方法“public static int TitleExists(string Title)”,现改用ajax+ashx,结果不知道怎么调用咯。
展开
 我来答
awl805
2015-07-28 · TA获得超过392个赞
知道小有建树答主
回答量:302
采纳率:100%
帮助的人:316万
展开全部
首先这是一个错误的认识,
jquery无论怎么样,针对 的都是请求,通俗点讲,jquery所做的事就是提交参数按照一定的方法给某个url。所以,jquery是无法调用ashx的静态方法的,只能丢一个请求到服务器。
调用这个方法,是服务器的脚本解析这个请求,然后再去调用这个方法,返回数据。
爱心善行共赢
2013-09-12 · TA获得超过313个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:271万
展开全部
ashx一般处理程序你可以直接在里面处理的,返回值就是 用context.Response.Write(写出一个json格式的数据);
请求这个路径 url: "AjaxServer.ashx/TitleExists" 修改成 url: "AjaxServer.ashx",就行

ashx里面这样写
if(context.Request["Title'"]!=null)
{
string titlestr=context.Request["Title"].ToString();
int result=TitleExists(titlestr);
context.Response.Write("{\"d\":\""+result+"\"}");
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姚婆咱网商城
2013-09-13
知道答主
回答量:4
采纳率:0%
帮助的人:5.1万
展开全部
首先 ,把请求这个路径 url: "AjaxServer.ashx/TitleExists" 修改成 url: "AjaxServer.ashx";
其次 ,把contentType: "application/json; charset=utf-8",这段代码删除掉!(AjaxServer.ashx.cs 就能接受到Title传过来的值)
最后,如果想在AjaxServer.ashx.cs 编写很多方法使用Switch语句
接受参数用 :context.Request[" "] ,返回值用:context.Response.Write( );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友818239c
2013-09-12 · TA获得超过361个赞
知道小有建树答主
回答量:731
采纳率:25%
帮助的人:219万
展开全部
我写一个简单的例子,仅供参考:
$("#txtTitle").live("change", function () {
$.ajax({
type: "Post",
url: "AjaxServer.ashx",
data: "{'action':'getargs','Title':'" + $(this).val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { //返回的数据用data.d获取内容
if (data.d != 0) {
$("#lblIsTitle").text("已存在!");
} else {
$("#lblIsTitle").text("");
}
}, error: function () {
alert("判断该标题是否已存在,操作失败");
}
});
});

//-------------------------后台方法
public void GetParams()
{
string action=request[“action”].toString();//这里这样写不会,自己写
if(action="getargs")
{
//这里调用你写的方法
response.write(这里返回json对象);
response.end();
}
}
追问
按你所说这样子:" string action= context.Request["action"].toString();"

执行程序会报错:“未将对象引用设置到对象的实例。”,大致是因为获取的context.Request["action"]=null,转换成string类型,结果会报错。

问题是:前台有传参数,怎么会出现“context.Request["action"]=null”?
追答
多半是这里有问题:data: "{'action':'getargs','Title':'" + $(this).val() + "'}",

你可以写成字符串的形式试一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jauntlin
2013-09-13 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:23万
展开全部
已经不需要再调静态方法了, ashx里的ProcessRequest方法里直接写上需要做什么的代码,或者根据不同参数调不同方法,然后直接Response.Write()出JSON,调用的那边就马上取到了JSON了

兄弟,你试一下后台通过Request.Form["action"]来取值看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式