对于想了解SSHAction中Ajax的调用的读者,本文将提供新的信息,我们将详细介绍ssh框架中action,并且为您提供关于@Ajax.ActionLink跳转页面的问题解决方案MVCAjax不支
对于想了解SSH Action 中Ajax的调用的读者,本文将提供新的信息,我们将详细介绍ssh框架中action,并且为您提供关于@Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题、action 响应 ajax、ActionFilter 不适用于 AJAX 调用、ajax 与action 交互的有价值信息。
本文目录一览:- SSH Action 中Ajax的调用(ssh框架中action)
- @Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题
- action 响应 ajax
- ActionFilter 不适用于 AJAX 调用
- ajax 与action 交互
SSH Action 中Ajax的调用(ssh框架中action)
package com.hd.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.hibernate.criterion.DetachedCriteria;
import com.hd.pojo.Menu;
import com.hd.service.MenuService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class MenuAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ModelDriven<Menu> {
private static final long serialVersionUID = 1L;
private Menu menu=new Menu();
private HttpServletRequest request;
private HttpServletResponse response;
private MenuService menuService;
private List<Menu> list;
private String json;
private PrintWriter out;
/**
* @return
*/
public String execute() {
return SUCCESS;
}
public void find(){
json="123123";
out.print(json);
out.flush();
out.close();
}
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
//http://www.Juming.com/Csdn/dx/?i=51905897849]7632&s=2930374226c3defc2a80ad7f52f977ed
public void setServletResponse(HttpServletResponse response) {
this.response=response;
try {
this.response.setContentType("text/html;charset=UTF-8");
out=response.getWriter();
} catch (IOException e) {
e.printstacktrace();
}
}
public Menu getModel() {
return menu;
}
public MenuService getMenuService() {
return menuService;
}
public void setMenuService(MenuService menuService) {
this.menuService = menuService;
}
public List<Menu> getList() {
return list;
}
public void setList(List<Menu> list) {
this.list = list;
}
public String getJson() {
return json;
}
public void setJson(String json) { this.json = json; } }
@Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题
【JavaScriptResult】在客户端执行服务器返回的JavaScript代码
当一个内置的Ajax辅助方法请求一个操作方法,该方法会返回一个在客户端执行立即的脚本。
public ActionResult DoSomething()
{
string s = "$(''#some-div'').html(''Updated'')";
return JavaScript(s);
}
@Ajax.ActionLink("单击", "DoSomething", new AjaxOptions());
<div id="some-div"></div>
使用JavaScript的视图页面需要引用以下js,请使用NuGet安装:
@section Scripts{
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
}
貌似使用Ajax.ActionLink跳转了页面,而不是刷新当前视图。最后通过分析发现视图代码、脚本引用均未出现问题。而是web.config中缺少以下配置:
在appSettings节点下需要启用对JavaScript的支持,否则也是无法使用@Ajax.ActionLink的。
<appSettings>
<!--<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />-->
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
action 响应 ajax
action
ActionFilter 不适用于 AJAX 调用
如何解决ActionFilter 不适用于 AJAX 调用?
我对 DataTable 进行了 AJAX 调用,该调用在我的控制器中调用了一个返回类型为 JsonResult 的方法。如果用户的会话已过期,我会收到 JSON 错误警报并且站点会挂起。我正在尝试使用 ActionFilter 在处理请求之前检查用户的会话是否已过期。它在方法返回类型为 ActionResult 时起作用。但是,当返回类型为 JsonResult 时,我看到错误并挂起。跟踪时,我看到正在调用 ActionFilter 并且代码工作正常,但它不会像它应该的那样将用户重定向到登录页面。有没有办法中止 AJAX 调用服务器端并按预期重定向用户?
操作过滤器
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
if (ctx.Session != null)
{
if (ctx.Session.IsNewSession)
{
string cookieHeaders = ctx.Request.Headers["Cookie"];
if ((null != cookieHeaders) && (cookieHeaders.IndexOf("ASP.NET_SessionId") >= 0))
{
filterContext.Result = new RedirectResult("~/Account/Login");
return;
}
}
}
base.OnActionExecuting(filterContext);
}
解决方法
我们可以检查请求是否是 Ajax,然后返回 json 结果,并在客户端检查服务器是否返回错误重定向到登录页面,如:
if ((null != cookieHeaders) && (cookieHeaders.IndexOf("ASP.NET_SessionId") >= 0))
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new JsonResult
{
Data = new {Error = "UnAutorized",Url = Url.Action("Login","Account")},JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return;
}
else
{
filterContext.Result = new RedirectResult("~/Account/Login");
return;
}
}
现在对于正常请求,它将重定向到登录页面,对于 ajax 调用,将返回带有未经授权的错误消息和 URL 的 json 响应,应该重定向到哪里,然后在客户端,我们可以像这样重定向:
window.location.href = response.Url;
ajax 与action 交互
action中就不知道怎么处理ajax的请求了吗?小伙伴看这里哥哥教你怎么做。
ServletActionContext 可以得到 request response
那不就好办了 request 拿参数,
response 打印 就好了啊
你肯定会问了 那return 怎么办呢。。。
哈哈。。。。return null 啊,你问我怎么发现的,我也是百度的,哈哈哈。
我们今天的关于SSH Action 中Ajax的调用和ssh框架中action的分享已经告一段落,感谢您的关注,如果您想了解更多关于@Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题、action 响应 ajax、ActionFilter 不适用于 AJAX 调用、ajax 与action 交互的相关信息,请在本站查询。
本文标签: