2 g420607387 G420607387 于 2015.05.26 12:58 提问

关于Ajax传参数到Action问题,获取不到参数,
  $("#Sea").click(function(){
            var Search = $("#Search").val();
            alert(Search);
            $.ajax({
                type: "get",
                url: "@SiteConfig.ProductSite/ProductList.aspx",
                jsonpCallback: "__ProductLists__", //回调方法
                dataType: "jsonp",                        //跨域调用数据协议
                data: { Sear: Search },   //自定义参数名,值
                success: function (data) {
                    alert("成功");
                },
                error: function () {
                    alert("失败");
                }
                });
        })
         public ActionResult ProductList(string catagoryId, int pageNo, ProductFilterModel filterModel, string Sear)
        {
            catagoryId = "001.001";
            pageNo = 1;
            Response.Cache.SetOmitVaryStar(true);           
            var pager = new PagerModel(pageNo, 12);

            int MemberType=2;
            if (MemberInfo !=null  && (MemberInfo.MemberType) != 0 )
            {
                MemberType = MemberInfo.MemberType;
            var dt = new ProdSkuProductSystem().SelectProdSkuProductByOptionValueIds(catagoryId, filterModel.ToList(), MemberType, Sear, pager); //筛选属性查询
         //public ActionResult ProductLists(string catagoryId, string Sear)
        //{

        //    return null;
        //}

前台通过Ajax传Sear参数到action中,发现传不过去,而我自己写了个测试的却能传过去,各位大神,这是什么情况啊?

5个回答

qwertyuiop66
qwertyuiop66   2015.05.26 13:11

没引入文件
可参考
$.ajax({
type: "post",
url: "<%=basePath %>bproduct/bpgdel1.action?rand="+Math.random(),
data: {"ids":ckArray.join(",")},
dataType: "json",
success: function(data){
if(data.state){
reload();
}else{
alert(data.msg);
}
}
});

G420607387
G420607387 这个跟引入文件啥关系啊, 我写注释那个测试的能用, 原来那个访问不能用, 这个应该没什么关系把
接近 3 年之前 回复
G420607387
G420607387 这个跟引入文件啥关系啊, 我写注释那个测试的能用, 原来那个访问不能用, 这个应该没什么关系把
接近 3 年之前 回复
diaoliwei2
diaoliwei2   Rxr 2015.05.26 13:26

alert的时候有值是吗?测一下把参数写到url后面呢?

G420607387
G420607387 回复DreamTHT: 你说的这2个我上午就测过了,还是不行,主要是我公司就我一个维护,出问题都没人讨论
接近 3 年之前 回复
diaoliwei2
diaoliwei2 回复G420607387: data: { Sear: Search }这写死值呢?data: { Sear: 'test'}这样呢?没头绪的只能一点一点排除了
接近 3 年之前 回复
G420607387
G420607387 回复DreamTHT: 换了参数名字还是一样, 哎
接近 3 年之前 回复
G420607387
G420607387 回复DreamTHT: 我把后台的其中一个参数放到那个Ajax中传, 能传过去,我就无语了。
接近 3 年之前 回复
diaoliwei2
diaoliwei2 回复G420607387: 有的时候越复杂的,可能改起来越简单。重新再仔细走一遍
接近 3 年之前 回复
diaoliwei2
diaoliwei2 回复G420607387: 这么恶心。。。。参数名换个试试呢?
接近 3 年之前 回复
G420607387
G420607387 有值的, debugger调试 ajxa 里面都有值,但是就是后台 获取不到
接近 3 年之前 回复
beacon_2011
beacon_2011   Rxr 2015.05.26 13:27

type: "get",
改成type: "post",
试一下;然后确认一下是没有传值过去还是根本没有进后台。

G420607387
G420607387 一样, 有值, 进了后台,但是就是没有获取到值,后台参数那一直为空,
接近 3 年之前 回复
showbo
showbo   Ds   Rxr 2015.05.26 13:53

自己用开发工具看下发送的ajax请求返回什么内容,是否报错了。filterModel你没有传递这个参数,但是调用了ToList方法报错了吧。

showbo
showbo 回复G420607387: 直接return返回你的类型得到的是json数据,不是jsonp,你的和webservice的方法差不多。看这个:http://www.coding123.net/article/20140609/jquery-jsonp-asp.net-webservice.aspx
接近 3 年之前 回复
G420607387
G420607387 回复小-石-子: 你说的貌似不是debugger吗? 其他的方法能详细说下吗?
接近 3 年之前 回复
lixiang913
lixiang913 调试下或者用火狐谷歌浏览器请求及结果
接近 3 年之前 回复
G420607387
G420607387 回复showbo: 咦。 你这样说的话,好像有点意思哦,那我这里不是还要用Response获取回调函数然后再输入类型啊, 但是我这里获取回调后,怎么获取他的数据呢, requset好像都不行吧,能详细说下吗,我比较菜
接近 3 年之前 回复
showbo
showbo 回复G420607387: 你的返回值呢?你的jsonp数据,你应该要调用Response对象获取回调函数名称后输出类型xxxx({数据内容})的代码后停止输出。要不单单输出json数据是获取不到的。而且你指定了jsonpCallback函数名称,你要自己定义这个指定的函数来接受返回值
接近 3 年之前 回复
G420607387
G420607387 filterModel 是调用的实体, 他获取的model 里面的方式,这里没有报错, 这是是不是我没有用返回的原因? 我只是传了参数进去,并没有要求返回参数
接近 3 年之前 回复
zhychj
zhychj   2015.05.26 14:21

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

G420607387
G420607387 大兄弟,有啥意义,说清楚点啊!
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!