.net 前端JS事件,响应C#后台。

是这样的 前端的一个JS事件,,注意是事件 而且这个事件只能在前端。
我需要这个事件返回给服务器一个字符串,然后去数据库找数据再返回到前端。

返回的字符串已经拿到了,,问题在 前端这个事件如何驱动后台的C#?

试过在JS事件里调C#的函数,,但是只能调静态的。

请教高手,在下小白

9个回答

后台webAPI

         /// <summary>
        /// 判断用户是否关注过
        /// </summary>
        /// <param name="memberToken">用户识别码</param>
        /// <returns>true:注过过,false:未注过</returns>
        [Route("CheckMemberIsSubs")]
        [HttpGet]
        public ResponseData<int> CheckMemberIsSubs([FromUri] string memberToken)
        {
            ResponseData<int> res = new ResponseData<int>();

            if (ModelState.IsValid)
            {
                res.Code = (int)ErrorCode.Success;
                res.Description = ErrorCode.Success.ToString();

                ErrInfo err = new ErrInfo();
                {
                    res.Data = Helper.BizMemberMgr.CheckMemberIsSubs(new Guid(memberToken), ref err);
                    res.Code = err.Code;
                    res.Message = err.ErrorMessage;
                    if (res.Code == (int)ErrorCode.Success)
                    {
                        res.Description = ErrorCode.Success.ToString();
                    }
                    else
                    {
                        res.Description = ((ErrorCode)Enum.Parse(typeof(ErrorCode), res.Code.ToString())).ToString();
                    }
                }
            }
            else
            {
                res.Code = (int)ErrorCode.WrongParameterFormat;
                res.Message = EnumName.GetEnumName(ErrorCode.WrongParameterFormat);
            }

            return res;
        }

从现有项目 搞出来的,不能理解出错的,就自己简化了,,,关联内容比较多没法发出来,,

 /** 
 * 订单取消 
 * @return {Boolean} 处理是否成功 
 */  
function orderCancel(orderId, commant){  
    var flag = false;  
    $.ajax({  
        type: "POST",  
        url: "../order/orderCancel.action", //orderModifyStatus  
        data: {"orderId":orderId,"commant":commant},  
        dataType:"json",  
        async:false,  
        cache:false,  
        success: function(data){  
            var member = eval("("+data+")"); //包数据解析为json 格式                                                            
            if(member.success=="true"){  
                flag = true;  
            }else if(member.success=="false") {  
                alert(member.info);  
            }  
        },  
        error: function(json){  
            alert("订单取消异常,请刷新后重试...");  
        }  
    });  
    hidediv();  
    return flag;  
}  
weixin_39422902
weixin_39422902 C#后台Response改 怎么写,,为啥我用Response.write("一个参数")页面会卡死
2 年多之前 回复

通过ajax触发后台逻辑

ajax+后台的方法,方法里加事件

weixin_39422902
weixin_39422902 ajax能调用后台的非静态方法吗? 方法里面怎么加事件?能不能给个实例
2 年多之前 回复

感觉楼主总纠结于 前台直接调用后台的方法。

这个真没试过如何实现。只能想到使用AJAX。

ajax语法参考: 楼上的、或 官方的


需求:“前端的一个JS事件事件返回给服务器一个字符串,然后去数据库找数据再返回到前端。”

简单的示例,其他参数见参考文档:

function YourJsEvent() {
    //这里是你的js处理逻辑
    //...       
    //请求服务器获取数据
    $.ajax({
        url: "处理页,你想要驱动的方法在这个页面实现",
        method: "POST",
        data: {
            "参数名称,你自定义的,服务器就读取这个参数获取值": "参数值,就是你要给服务器的字符串"
        },
        success: function(){
            //处理服务器返回的结果
        }
    });
}
weixin_39422902
weixin_39422902 ajaxObject.open('get', 'modeldata.aspx?uniqueId=' + uniqueId, true); ajaxObject.send(); ajaxObject.onreadystatechange = function () { if (ajaxObject.readyState == 4 && ajaxObject.status == 200) { document.getElementById('sun').innerHTML = ajaxObject.responseText.substring(0,45); } };
2 年多之前 回复
weixin_39422902
weixin_39422902 C#后台Response改 怎么写,,为啥我用Response.write("一个参数")页面会卡死
2 年多之前 回复

比较成熟的方案是前端JS ajax
后端webapi

或着前后端合在一个MVC项目里

ajax,前端大家都说了,,没什么好说的。。

mvc、webapi可以返回xml也可以返回json,,但目前通常去掉xml,只用json

等我整理下,,下一楼再详细点发给你

<script type="text/javascript" src="../Scripts/jquery-3.2.1.js"></script>
             $("#AjaxTestApi").on("click", function (e) {//这里你的对象ID绑定相关事件
                console.log($('#Method').val());


                $.ajax({
                    async: true,
                    type:"get",
                    url: $("#<%=ApiUrl.ClientID%>").val(),//不能跨域不然405
                    data: {},//$("#Method").val() == "Post" ? JSON.parse($("#<%=Post.ClientID%>").val()) : {},//JSON.stringify(t)//将对象转为json字符串  JSON.parse不支持bool nuber等,,全部变字符串
                    dataType: "json",//json不能跨域 jsonp 可以 不能POST              
                    contentType: "application/json",//这个必须,不然后台接受时会出现乱码现象 
                    success: function (resp) {
                        console.log(resp);
                        $("#<%=result.ClientID%>").val(JSON.stringify(resp,null," "));//(对象,过滤器可以函数要返回值也可以数组,前置符)
                    },
                    error: function (resp) {
                        console.log(resp);
                        resp.message = "注意,无法跨域使用!";
                        $("#<%=result.ClientID%>").val(JSON.stringify(resp, null, " "));//(对象,过滤器可以函数要返回值也可以数组,
                    }
                });

这个JS涉及常用的多种情况,,奉献了,,,从正在进行的项目中搞出来的~~

另外奉献一句,前后端交互还是用webapi、 mvc的好,要是用Aspx,有比较多的局限性跟大小问题,实在要用,参考早期的文章,,,用
aspx带的局部更新功能来做就行了~~~

这个太久没用,,也没现成的代码,,就自己找找吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐