首页 新闻 会员 周边

MVC4.0中Ajax通过<a>标签向后台Action传递参数问题?

0
悬赏园豆:10 [已解决问题] 解决于 2014-03-20 11:44

Ajax:

<script type="text/javascript">
     $(document).ready(function dianZan(id,dianZan){
         $.ajax({
             url :"Home/DianZan",
             type:"post",    //数据发送方式
             async: false,
             data:{"id":id,"dianZan":dianZan},
             dataType:"json",   //接受数据格式          
             error: function(){
                 alert("服务器没有返回数据,可能服务器忙,请重试");
             },       
             success: function () {
                 alert("点赞成功!");
             }
         });                  
     });
</script>

 

.cshtml:

   <a href="javascript:dianZan(@item.Id,@item.DianZan)">点赞</a>

 

后台Action:

   public ActionResult DianZan(string id, string dianZan)
        {
            var model = new ViewModels
            {
                users = new Common.Model.Users(),
                bbsInfo = new Common.Model.BbsInfo(),
                userBbs = new Common.Model.UserBbs(),
                userBbsItem = new Common.Model.UserBbsItem()
            };
            if (Request.Cookies["name"] == null || Request.Cookies["name"].Value == "")
            {
                return RedirectToAction("Contact", "Home");
            }
            string name = Request.Cookies["name"].Value;
            DataTable list = new Common.BLL.UsersBLL().GetUserId(name);
            int userId = int.Parse(list.Rows[0].ItemArray[0].ToString());
            if (userId > 0)
            {
                new Common.BLL.BbsInfoBLL().DianZan(int.Parse(id), int.Parse(dianZan));
                new Common.BLL.UserBbsBLL().AddDianZan(userId, int.Parse(id));
            }
            return RedirectToAction("Index", "Home");
        }

问题补充:

后台获取不到参数,无法进行Action,求解!

Anily丶的主页 Anily丶 | 初学一级 | 园豆:190
提问于:2014-03-20 11:10
< >
分享
最佳答案
1

你先把参数去掉,调试看一下是不是传参的问题,进后台方法没

收获园豆:10
单恋 | 小虾三级 |园豆:678 | 2014-03-20 11:18

是去除后台的Action的参数是吗?

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:19

@Anily丶: data:{"id":id,"dianZan":dianZan},这里设为空,public ActionResult DianZan()这个方法去掉参数,看进后台不,如果没进,就是其他的问题

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:22

@单恋: 没有进入后台……我直接data:""   后台页面有参数只是给定了一个跳转,没有执行,       

public ActionResult DianZan()
        {

                return RedirectToAction("Contact", "Home");

}

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:24

@Anily丶: 也可能是你返回的内容错误,你返回类型是json,而你方法是ActionResult。

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:25

@单恋:我试试直接用post传递下

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:28

@Anily丶: 

//js
function qiandao() {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "/ComRia/QianDao",
                dataType: "json",
                data: null,
                success: function (txt) {
                    if (txt == -1) {//exist
                       alert("用户信息不存在!");                    }
                    else if(txt==1) {//succ
                        aler("签到成功")                    
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    window.location.href = "/Error";
                }
            });   

  //
[HttpPost]
        public JsonResult QianDao()
        {
            UserViewModel user = new UserBFacade().Check();
            if (user != null)
            {
                //签到成功
                return this.Json("1");
            }
            return this.Json("-1");
        }   
View Code


这是我的一个签到方法,你看一下

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:32

@单恋: 貌似依然行不通,进入不了后台Action

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:32

@Anily丶: 你先在调试看一下进你的ajax没,然后再排除其他问题

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:36

@单恋: 问题依然存在,不过还是要谢谢你!给了我另一个新的思路解决点赞的问题!

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:43

@Anily丶: 嗯,你可以看一些ajax的资料,看到你上面的后台action,总感觉有问题。嘿嘿,当然我也是小菜一枚。大家共同进步了

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:46

@单恋: 嗯……谢谢你!

Anily丶 | 园豆:190 (初学一级) | 2014-03-20 11:51

@Anily丶: 不用谢,能帮助到别人是对自己最大的肯定。

单恋 | 园豆:678 (小虾三级) | 2014-03-20 11:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册