asp.net webform程序,前台jq代码如下:
$(function(){ var name=$("#txtName"); var pwd=$("#txtPwd"); $("#add").click(function () { if (name.val() == ""||pwd.val()=="") { alert("账号或密码不能为空!"); } else { $.post("SuperAdmin.aspx/Add", { "name": name.val(), "pwd":
pwd.val() }, function (data) { alert(data); }); } });
后台aspx.cs中的Add方法返回的是int值,
public void Add(string name,string pwd)
{
int i=ab.AddAdmin(name,pwd);
return i;
}
但是点击按钮后alert显示的data是本页的网页源代码(如下图),搞不懂怎么回事,请明白的大神指点一二,谢谢!
你的那个add方法返回类型是void
恩 ,那个确实是错的,但是之前写的int也是不行
@正在了: 将返回的结果拼成json字符串,然后用Response.Write()方法返回
你的add方法最好返回JSON格式数据(如果请求标头Accept:text/json),要么就是纯文本(如果请求标头Accept:text/html,application/xhtml+xml),请求标头可以看看jquery的ajax文档
谢谢,我是想通过返回值得不同来实现Add方法执行成功或失败的后做不同的操作,但是不知道前后台的衔接分别怎么写,也不知道这种情况用哪种数据格式比较好。现在每次数据都提交不了。如果可以的话最好有代码实例
@正在了: 你要么用webservice返回Json格式数据,如果你是webForm的话,要么就是MVC返回JsonResult
以上返回给前台ajax请求这样的json格式数据:{success=true/false,data=?????},之后ajax回调处理接收的json数据 判断 success=true怎么操作,=false怎么操作
二楼跟1楼说的都有道理。 建议采纳。
程序有问题啊,
public int Add(string name,string pwd) { int i=ab.AddAdmin(name,pwd); return i; }
add方法 必须是 Static 的,而且得加上 [WebMethod] 特性才行,试试
加上这些还是原样
@正在了: 方法去掉void改成int
@webaspx: 恩 就是改成int,但是data还是一堆源代码。。。这是后台方法,我返回值主要是想从前台知道Add方法是否成功执行了,但就是接收不到返回值。
用mvc吧
可以用好多种方法解决吧
1.用webservice解决,这种方法你需要设置[webmethod]还有你的add方法不能是void了要改成int
2.把数据吐到页面
麻烦能写个具体的前后台实例吗?还是具体不太懂。第一种加了[WebMethod]和static还是不行
你去请求一个WebForms页面,返回的就应该是这样。你要么使用https://ajaxpro.codeplex.com/这个库将aspx.cs中的方法转换为ajax方法,要么请求ashx,或者直接将程序修改为asp.net mvc框架。
我学疏才浅 实在惭愧,搞了1天明白了:ajax请求aspx页面与ashx页面以及asmx是不同的。这种$.post()的简便方法由于不能设置contentType和dataType,所以即使请求的是页面中的方法,最后请求的还是当前页面,返回的值仍旧是当前页面的html内容。所以要想实现还得用$.ajax()这样的非简便方法设置dataType为“json”,contentType为“application/json;charset=utf-8”,返回json。
@正在了: 是的,关键还得看你后端返回什么。默认情况下,是无法请求倒aspx中的方法的,需要借助其他库赖转换一下。
谁说访问不到?都有返回值了还没访问到?
1,这个方法加上那个【】标签,
2,response..clear(),清空之前返回存储的返回。
3,然后这个方法,写对 用一下response 或者renturn试一下,加上类型最好,因为post方法貌似没有datatype这个属性。