首先这是一个错误的认识,
jquery无论怎么样,针对 的都是请求,通俗点讲,jquery所做的事就是提交参数按照一定的方法给某个url。所以,jquery是无法调用ashx的静态方法的,只能丢一个请求到服务器。
调用这个方法,是服务器的脚本解析这个请求,然后再去调用这个方法,返回数据。
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+"\"}");
}
首先 ,把请求这个路径 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( );
我写一个简单的例子,仅供参考:
$("#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();
}
}
已经不需要再调静态方法了, ashx里的ProcessRequest方法里直接写上需要做什么的代码,或者根据不同参数调不同方法,然后直接Response.Write()出JSON,调用的那边就马上取到了JSON了
兄弟,你试一下后台通过Request.Form["action"]来取值看看