目的:通过jquery的ajax调用页面后台的一个函数返回一个值。
有一个asp.net的页面a.aspx我在此页面中加入了jquery
$.ajax({
type:"POST",
url:"a.aspx/ajaxmethod",
data:"{'name':'test','pwd':'123'}",
datatype:"text", //或者json
success:function(data){
alert(data);
}
});
a.aspx.cs中的代码
[WebMethod]
public static string ajaxmethod(string name,string pwd)
{
return name+pwd;
}
问题:现在单步调试的时候.cs文件只能执行Page_load中的代码,就是不会调用ajaxmethod这个函数。请教下高手是哪里出错了。
有一个asp.net的页面a.aspx我在此页面中加入了jquery
$.ajax({
type:"POST",
url:"a.aspx/ajaxmethod",
data:"{'name':'test','pwd':'123'}",
datatype:"text", //或者json
success:function(data){
alert(data);
}
});
a.aspx.cs中的代码
[WebMethod]
public static string ajaxmethod(string name,string pwd)
{
return name+pwd;
}
问题:现在单步调试的时候.cs文件只能执行Page_load中的代码,就是不会调用ajaxmethod这个函数。请教下高手是哪里出错了。
解决方案 »
- 域用户登录网页,有的可以,有的报“-2146893052 (0x80090304)”的错
- Ajax的CollapsiblePanelExtender问题
- 添加浏览器右键功能"发送到text.htm",然后处理发送过来的页面的数据
- aspnet web形式的柱图、饼图、用什么画?
- 在做新闻系统时候,如何解决模版问题?让用户可以自由生成各式各样的网站??
- 怎么读取excel文件中的所有sheet名称?
- owc生成统计图片在其他计算机上不能显示的问题
- 关于使用ADO.NET更新数据的问题~
- 招聘程序员
- rdlc如何实现2报表间的切换?
- 完全可以在Linux上跑ASP.NET网站
- 关于工厂模式,一般什么情况下使用?
public static string ajaxmethod(string name,string pwd)
{
return name+pwd;
}
在调用页面加response.end();
又触发page_load,又仅仅是调用一个简单方法,这种所谓的ajax方法不伦不类,不要使用。当一个方法是重量级方法,它应该自动提交用户在客户端修改过的所有内容,然后服务器端才重建页面上素有复杂而完整的所有控件,然后服务器就可以自动回复状态、装入用户修改的状态值、触发所有事件,最后它应该自动刷新部分界面内容,并且可以处理更新页面在客户端记录的ViewState,以及向浏览器写入新的cookie,等等功能。否则,如果仅是一个轻量级ajax方法(例如你可以参考asp.net ajax的标准方法来看看什么是轻量级方法),那么就不应该花费巨大代价在服务器上重建页面控件对象,而仅仅执行一个方法就足够了。这就不可能调用page_load。一个对于客户端来说是轻量级功能,却在服务器端重建页面对象,调用page_load,实在是不伦不类的ajax。在asp.net ajax正式发布之前,asp.net的客户端回调技术也是这种不伦不类的,后来asp.net ajax的发布才真正给出了asp.net的标准ajax的处理功能。只不过asp.net ajax正式发布没有赶上asp.net2.0发布,不得已在asp.net2.0发布之后作为一个独立的软件包发布,所以好多写asp.net2.0编程的入门书上都缺乏讲解asp.net ajax编程知识。
我主要的目的针对我的业务尝试下轻量级jquery的ajax方式。asp.net ajax我也用它做过一些东西,总体感觉执行的效率和可控性不高(不知道是我没有真正弄懂她还是其他原因)。
ms也接受了jquery,我现在就是想如何能把jquery和asp.net融合在一起做点东西。你说的也有一定的道理,可是和我想要结果有些出入。纠正下你可能错误理解了我的意思,我是说我想调用ajaxmethod方法,但是到后台单步调试时候他仅仅是执行page_load,我本意不是要他执行page_load。
有JQuery的资料,也有你要的答案
顶
按道理说不会执行 Page_Load 方法的
而是执行我们调用的方法
奇怪了
呵呵,我也不知道怎么回事!期待高手解决!另外,返回值可以用response.write();response.end();解决,小弟也是刚学这个,这几天一直研究呢,有空可以探讨下……
{
response.end();
}
$.ajax({
type: "get",
dataType: "json",
url: "/Ajax/Lin/User.aspx?temp=" + Math.random(),
data: "Call=5",
//出错处理
error: function() {
alert("出见异常,请退出登陆关闭浏览器在打开本站!");
},
//发送前事件
beforeSend: function() {
},
//成功后事件
success: function(data) {
if (Type == 2) {
if (data.msg == "1") {
alert("你已经登陆!需要更换用户名.请安全退出在打开本页!");
window.navigate("/Index.Shtml");
}
}
else {
if (data.msg == "1") {
$("#CKName").html(data.UserName);
$("#Login").hide();
DelDIV("Login");
$("#IsLogin").show();
}
else {
$("#Login").show();
$("#IsLogin").hide();
}
}
}
});
}后台代码: protected void Page_Load(object sender, EventArgs e)
{
if (Request["Call"] != null)
{
switch (Request["Call"].ToString())
{
case "1":
CheckName();
break;
case "2":
Reg();
break;
case "3":
CheckEMail();
break;
case "4":
Login();
break;
case "5":
TopLogin();
break;
case "9":
GetUserJson();
break;
default:
break;
}
}
else
{
Response.Write("<script language=javascript>window.navigate(\"/Index.Shtml\");</script>");
}
} //检测用户可否注册
protected void CheckName()
{
BHL.BLL.BHLUser bb = new BHL.BLL.BHLUser();
Response.Write(bb.Exists(Request["Name"].ToString().Trim()));
} //检测EMail是否可注册
protected void CheckEMail()
{
BHL.BLL.BHLUser bb = new BHL.BLL.BHLUser();
Response.Write(bb.ExistsEMail(Request["EMail"].ToString().Trim()));
}
data: "Call=5&Cache=" + Math.random(),
上面那段换下哈这样合理
缺少一个
contentType:"application/json",属性
第二
接收json类型,在alert里面用 data.d
$(function(){
//alert("init");
$("#buttonAjax").click(ajaxSend);
})
function ajaxSend(){
$.ajax({
type: "POST",
url: "jqueryScripts.aspx/GetServerMsg",
data: "{'user':'" + $("#txtUser").val() + "'}",
contentType: "application/json; charset=utf-8",
success: function(msg) { showMessage(msg); }
});
}
function showMessage(msg) {
var msg = "(" + msg + ")";
var json = eval(msg);
var message = json.d; $("#divShow").html(message);
}
</script>
[System.Web.Services.WebMethod]
public static string GetServerMsg(string user)
{
return string.Format("user is {0};", user);
}我在自己的电脑上用的是vs2008 + jquery
可以实现 但是在办公室的话 却是不行 办公室是vs2005 估计可能是vs版本的问题 不知道 有没有哪位高手可以详细的说说 感谢!!
调用CS中的静态方法,还需要加上[System.Web.Services.WebMethod]属性.
LZ没加上.
url:"a.ashx?name=aa&password=bb",