由于近期工作需要将人脸识别功能与选课系统结合,但是对前端知识了解的很少,只能边做边学了,因此在这边把遇到的一些坑说明一下,希望能帮助到像我一样的初学者
二、具体内容
这里采用框架为MVC,如果想在页面中不通过提交表单方式与控制器交互的话,可以用ajax去调用控制器方法并传递参数以及处理返回的json数据,方法如下
页面代码:
$.ajax(
url: '/User/facelog', // 请求地址, 就是你的控制器, 如 test.com/home/index/index
data: JSON.stringify({ stuID: stuID2 }), // 需要传送的参数
type: 'POST', // 请求方式
dataType: 'json', // 返回数据的格式, 通常为JSON
contentType: 'application/json',
success: function (result) {
window.location.href = result.NextUrl;
msg = result.Msg;
console.log(result); // 请求成功后的回调函数, result 为响应内容
error: function () {
console.log('Send Request Fail..'); // 请求失败时的回调函数
控制器代码:
[HttpPost]
public JsonResult facelog(string stuID)
User user = this.UserService.Select((User T) => (T.UserName == stuID) && T.Status == 0);
if (user != null)
base.Session["UserInfo"] = user;
AjaxMsg ajaxMsg = new AjaxMsg()
Statu = "ok",
Msg = "登陆成功,正在跳转页面...",
NextUrl = "/User/Main"
return base.Json(ajaxMsg);
return base.Json(new { Statu = "error", Msg = "账号或密码错误!"});
这里有几个坑需要特别说明一下:
在URL填写中为‘/控制器/方法名’这里一定要注意,控制器指的并不是控制器全名,而是去掉controller的那个,这里我的控制器为UserController,因此这里填写User,话说我踩到这个坑,害我调试了好久。。。
就是传递参数格式了,data这里传递的参数是动态的,因此就定义了全局变量存储,这里被坑的地方是stuID2 的值是从另外一个ajax请求中获得,但另外一个数据还未返回时这个ajax已经执行了,害我一直以为是data填的格式不对才导致数据无法传递到控制器中
接第二点,如果想要在一个ajax执行完成后再执行另外一个,这里用 async: false即可,默认情况是为true的
JSON.stringify 要与 contentType: 'application/json' 一起用才能很好的将数据传递过去
关于返回数据,一般为json的需要解析一下
一、背景 由于近期工作需要将人脸识别功能与选课系统结合,但是对前端知识了解的很少,只能边做边学了,因此在这边把遇到的一些坑说明一下,希望能帮助到像我一样的初学者二、具体内容 这里采用框架为MVC,如果想在页面中不通过提交表单方式与控制器交互的话,可以用ajax去调用控制器方法并传递参数以及处理返回的json数据,方法如下页面代码: $.ajax( { ...
在使用的过程中发现,如果要在pullEvent()方法中获取参数比较麻烦,查看源码发现nl.justobjects.pushlet.servlet.Pushlet中已经将request参数传进了Session(注意是nl.justobjects.pushlet.core.Session)。但是在session构造的时候没有用到request。看到这里,就大概知道改怎么改了。代码如下:
1. nl.justobjects.pushlet.core.Session,添加了event域和getEvent()方法,修改了public static Session create(String anId, Event anEvent)方法
public static Session create(String anId, Event anEvent) throws PushletException {
Session session;
try {
session = (Session) Config.getClass(SESSION_CLASS, "nl.justobjects.pushlet.core.Session").newInstance();
} catch (Throwable t) {
throw new PushletException("Cannot instantiate Session from config", t);
// Init session
session.id = anId;
session.controller = Controller.create(session);
session.subscriber = Subscriber.create(session);
session.event = anEvent;
return session;
} 2. nl.justobjects.pushlet.core.SessionManager,修改了createSession()方法
* Create new Session (but add later).
public Session createSession(Event anEvent) throws PushletException {
// Trivial
return Session.create(createSessionId(), anEvent);
} 3. ajax-pushlet-client.js,PL添加了parameters属性,修改了_doRequest函数,在函数的最后加了如下一段:
if(PL.parameters.length > 0) {
for (var i = 0; i < PL.parameters.length; i++) {
var para = PL.parameters[i];
url += "&" + para.name + "=" + para.value;
} 好了,源代码修改完毕,下面是一个如何传递参数的例子
在页面上js代码: // pushlet服务器推送,更新实时监控模块
var initPushlet = function() {
PL.parameters.push({"name":"user-id", "value":"001");
PL._init();
PL.joinListen('/source/event');
在HelloWorldPlushlet的pullEvent()方法调用:
Session[] sessions = SessionManager.getInstance().getSessions();
String userId = sessions[0].getEvent().getField("user-id");
今天分享的案例,也是困扰我一下午,但一大早起来就找到了解决方案。
在后台管理中,比如删除某一个指定的用户时,会弹出一个对话框,点击确认按钮后,才删除当前用户.
后台已写好了删除操作的Action动作,需要在删除点击确认时调用即可。
我这边是用的模板,
Demo:
<div class="tip">
<div class="tiptop"><span>提示信息</span><a></a></div>
<div clas
这里前端html页面使用ajax向controller传递的主要是form表单的内容,且前端使用了layui框架。后端controller接收值可以有两种方法
1.前端cshtml代码(layui模板自带的登录界面,使用时记得添加相关的引用和依赖,这里已经封装在BundleConfig.cs中)
ViewBag.Title = "Login";
<!DOCTYPE ...
AJAX向后端发送一个请求并携带有参数,后端处理请求并把数据转化为JSON字符串返回给AJAX,AJAX获取值显示在页面
url:请求地址
type:请求方式,GET、POST
data:要携带的数据,多个数据用逗号隔开
success: function(map) 成功之后执行的回调函数(全局),map为后端返回的数据
$("#a").val(map.value1) #标签名.val 给这个标签值
AJAX:
function test(value1,value
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</ve...