首页 新闻 会员 周边 捐助

jQuery $.post()的data返回值相关问题

0
悬赏园豆:20 [待解决问题]

 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是本页的网页源代码(如下图),搞不懂怎么回事,请明白的大神指点一二,谢谢!

正在了的主页 正在了 | 初学一级 | 园豆:153
提问于:2016-01-25 23:48
< >
分享
所有回答(9)
0

你的那个add方法返回类型是void

CodeHsu | 园豆:5668 (大侠五级) | 2016-01-25 23:58

恩 ,那个确实是错的,但是之前写的int也是不行

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-26 11:16

@正在了: 将返回的结果拼成json字符串,然后用Response.Write()方法返回

支持(0) 反对(0) CodeHsu | 园豆:5668 (大侠五级) | 2016-01-26 15:26
0

你的add方法最好返回JSON格式数据(如果请求标头Accept:text/json),要么就是纯文本(如果请求标头Accept:text/html,application/xhtml+xml),请求标头可以看看jquery的ajax文档

张放春 | 园豆:43 (初学一级) | 2016-01-26 00:21

 谢谢,我是想通过返回值得不同来实现Add方法执行成功或失败的后做不同的操作,但是不知道前后台的衔接分别怎么写,也不知道这种情况用哪种数据格式比较好。现在每次数据都提交不了。如果可以的话最好有代码实例

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-26 11:16

@正在了: 你要么用webservice返回Json格式数据,如果你是webForm的话,要么就是MVC返回JsonResult

以上返回给前台ajax请求这样的json格式数据:{success=true/false,data=?????},之后ajax回调处理接收的json数据 判断 success=true怎么操作,=false怎么操作

 

支持(0) 反对(0) 张放春 | 园豆:43 (初学一级) | 2016-01-26 21:14
0

二楼跟1楼说的都有道理。 建议采纳。

斯拉克 | 园豆:223 (菜鸟二级) | 2016-01-26 09:00
0

程序有问题啊,

    public int Add(string name,string pwd)
    {
        int i=ab.AddAdmin(name,pwd);
        return i;
    }
Crawford | 园豆:155 (初学一级) | 2016-01-26 09:10
0

add方法 必须是 Static 的,而且得加上 [WebMethod] 特性才行,试试

webaspx | 园豆:1973 (小虾三级) | 2016-01-26 09:11

加上这些还是原样

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-26 11:19

@正在了: 方法去掉void改成int

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2016-01-26 11:29

@webaspx: 恩 就是改成int,但是data还是一堆源代码。。。这是后台方法,我返回值主要是想从前台知道Add方法是否成功执行了,但就是接收不到返回值。

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-26 12:00
0

用mvc吧

茂茂 | 园豆:2902 (老鸟四级) | 2016-01-26 09:22
0

 可以用好多种方法解决吧

1.用webservice解决,这种方法你需要设置[webmethod]还有你的add方法不能是void了要改成int

2.把数据吐到页面

起个好昵称怎么这么难 | 园豆:156 (初学一级) | 2016-01-26 10:14

麻烦能写个具体的前后台实例吗?还是具体不太懂。第一种加了[WebMethod]和static还是不行

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-26 11:32
0

你去请求一个WebForms页面,返回的就应该是这样。你要么使用https://ajaxpro.codeplex.com/这个库将aspx.cs中的方法转换为ajax方法,要么请求ashx,或者直接将程序修改为asp.net mvc框架。

幻天芒 | 园豆:37207 (高人七级) | 2016-01-26 13:35

我学疏才浅 实在惭愧,搞了1天明白了:ajax请求aspx页面与ashx页面以及asmx是不同的。这种$.post()的简便方法由于不能设置contentType和dataType,所以即使请求的是页面中的方法,最后请求的还是当前页面,返回的值仍旧是当前页面的html内容。所以要想实现还得用$.ajax()这样的非简便方法设置dataType为“json”,contentType为“application/json;charset=utf-8”,返回json。

支持(0) 反对(0) 正在了 | 园豆:153 (初学一级) | 2016-01-27 00:01

@正在了: 是的,关键还得看你后端返回什么。默认情况下,是无法请求倒aspx中的方法的,需要借助其他库赖转换一下。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2016-01-27 11:48
0

谁说访问不到?都有返回值了还没访问到?  

1,这个方法加上那个【】标签,

2,response..clear(),清空之前返回存储的返回。

3,然后这个方法,写对 用一下response 或者renturn试一下,加上类型最好,因为post方法貌似没有datatype这个属性。

李可在江湖 | 园豆:198 (初学一级) | 2016-02-03 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册