是这样的 前端的一个JS事件,,注意是事件 而且这个事件只能在前端。
我需要这个事件返回给服务器一个字符串,然后去数据库找数据再返回到前端。
返回的字符串已经拿到了,,问题在 前端这个事件如何驱动后台的C#?
试过在JS事件里调C#的函数,,但是只能调静态的。
请教高手,在下小白
后台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;
}
从现有项目 搞出来的,不能理解出错的,就自己简化了,,,关联内容比较多没法发出来,,
通过ajax触发后台逻辑
ajax+后台的方法,方法里加事件
https://www.cnblogs.com/zxhoo/archive/2011/01/30/1947752.html
http://wo13145219.iteye.com/blog/2026182
/**
* 订单取消
* @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;
}
感觉楼主总纠结于 前台直接调用后台的方法。
这个真没试过如何实现。只能想到使用AJAX。
ajax语法参考: 楼上的、或 官方的
需求:“前端的一个JS事件事件返回给服务器一个字符串,然后去数据库找数据再返回到前端。”
简单的示例,其他参数见参考文档:
function YourJsEvent() {
//这里是你的js处理逻辑
//...
//请求服务器获取数据
$.ajax({
url: "处理页,你想要驱动的方法在这个页面实现",
method: "POST",
data: {
"参数名称,你自定义的,服务器就读取这个参数获取值": "参数值,就是你要给服务器的字符串"
},
success: function(){
//处理服务器返回的结果
}
});
}
比较成熟的方案是前端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带的局部更新功能来做就行了~~~
这个太久没用,,也没现成的代码,,就自己找找吧