1. 程式人生 > >spring mvc中返回ModelAndView後執行ajax非同步請求

spring mvc中返回ModelAndView後執行ajax非同步請求

起初是想如果返回的ModelAndView在jsp中的物件是否可轉為jquery可讀的json物件,我想對物件的資料進行單獨的處理,其他的資料直接用c標籤顯示在頁面上。但是查資料然後自己試都不行,只能取單獨的屬性值然後進行處理。全部取出比較麻煩。

後來又有了想法,一部分資料通過返回ModelAndView進行顯示,部分資料通過jquery的ajax非同步請求進行返回。結果證明這種方法可行,這樣我們需要的資料就在一個頁面上顯示了。然後在這裡做一個記錄。

因為考慮到很多方法的重用,需要把通用的方法提出來,比如select下拉,幾個頁面顯示的內容都有可能是一樣的。

先貼上後臺的程式碼:




view部分配置如下:

<bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/jsp/"
          p:suffix=".jsp" 
          /> 

我的想法是這樣的,當對 jsp/getAllUserInfo.do發出請求的時候,返回資料頁面,頁面通過$(document).ready();來呼叫js,去非同步請求 jsp/getSelect.do,顯示非同步請求的資料。

貼上前端的程式碼:

jstl.jsp頁面:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>user page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../js/commons.js"></script>
<script type="text/javascript" src="../js/jstl.js"></script>
<script type="text/javascript">
	$(document).ready(function(){
		getSelect();
	});
</script>


</head>
<body>
<h5>${allUserInfo.userInfo.username}</h5>
<h5>${allUserInfo.userInfo.password}</h5>
<h5>${allUserInfo.name}</h5>
	<select id="select1">
		<c:forEach items="${allUserInfo.list}" var="e">
			<option value="${e}">${e}</option>
		</c:forEach>
		<script>
			$("#select1").val("${allUserInfo.name}");
		</script>
	</select>
	
	
	<p/>
	<select id="select2">
	
	</select>

</body>
</html>

ajax非同步請求:
function PostJSONQuery(postURL,json, on_success)
{
  $.ajax({
    url: postURL,
    type:"post",
    contentType : "application/x-www-form-urlencoded;charset=utf-8",
    processData : true,
    data: json,
    dataType: "json",
    success: function(response) {
      on_success(response);
    },
    error: function (xhr, ajaxOptions, thrownError) {
    	//showAlertInfo("error");
    }
  });
}

function getSelect(){
	alert("--");
	PostJSONQuery("getSelect.do",{},function(response){
		for(var i=0;i<response.length;i++){
			$("#select2").append("<option value="+response[i]+">"+response[i]+"</option>");
		}
		$("#select1").val("晒太陽");
	});
	
	
}

這裡有一個執行順序問題,首先肯定是返回頁面,將view資料顯示出來,然後再去頁面載入完成後會去呼叫ajax請求,

所以先會執行:

$("#select1").val("${allUserInfo.name}");

然後執行

alert("--");
最後執行
$("#select1").val("晒太陽");
因為最近比較空,在看自己之前做的專案,看看那邊做的不好,因為才參加工作半年,前面幾個專案寫的程式碼質量有點爛,現在看看真的是有點看不下去了。。。。。

以上是我學習發現的,拿出來給大家分享一下。

相關推薦

spring mvc返回ModelAndView執行ajax非同步請求

起初是想如果返回的ModelAndView在jsp中的物件是否可轉為jquery可讀的json物件,我想對物件的資料進行單獨的處理,其他的資料直接用c標籤顯示在頁面上。但是查資料然後自己試都不行,只能取單獨的屬性值然後進行處理。全部取出比較麻煩。 後來又有了想法,一部分資料

Spring MVC返回JSON資料的幾種方式

我們都知道Spring MVC 的Controller方法中預設可以返回ModeAndView 和String 型別,返回的這兩種型別資料是被DispatcherServlet拿來給到檢視解析器進行繼續處理返回頁面的,而不是直接返回給客戶端的。有時候我們需要發請求後讓服務端直接返回一些資料,不再經過Dispa

Spring MVC返回JSON數據的幾種方式

return res set 轉換 public servlet 兩種 dispatch ont 我們都知道Spring MVC 的Controller方法中默認可以返回ModeAndView 和String 類型,返回的這兩種類型數據是被DispatcherServlet

Spring MVC ModelAndView返回頁面不正確

問題和解決 UserController.java檔案 @Controller @RequestMapping("user") public class UserController { @RequestMapping("/test3") public Model

解決Spring MVC @ResponseBody返回文字符串亂碼問題

有效 per log bean dia media converter 原因 ons 引起亂碼原因為spring mvc使用的默認處理字符串編碼為ISO-8859-1 具體參考org.springframework.http.converter.StringHttpMess

Spring MVC @autowired 註入為null

springMVC遇到一個很奇怪的問題就是@Autowired註入失敗,首先我去檢查了該類是否被spring 容器托管 ,發現相應的類已經添加@controller、@service等註解,說明該類已經為Spring類,不存在非spring無法使用@Autowired註入的問題。在網上也查了很多文章,都沒有解

spring mvcDispatcherServlet如何得到ModelAndView

首先看下面這種張圖,這張圖說明了spring mvc整體的流程。   本文講的就是如何從DispatcherServlet中得到ModerAndView的過程。 首先看DispatherServlet這個類的doService方法,學過servlet的人都知道,它是web容器處理請求的入口

spring boot得定時任務執行一段時間突然停了 排查過程

在spring boot 專案中設定了一些定時任務,前幾天還執行得好好的,突然有一天就不再執行了,基本上呢都是執行了四天左右,定時任務停掉不在運行了,然後重啟程式定時任務就好使了,出現這麼兩次,第三次是在重啟以後第三天出現定時任務不再執行。感覺莫名其妙,查了好多資料,以下是關於我查到的關於定時任

spring mvcajax的呼叫(在上一篇的基本上)

spring mvc中ajax的呼叫 目錄 三、測試 一、在網格根目錄下建 resources\css resources\css\css.css @CHARSET "UTF-8"; .cssTable{ border:1px blue solid;

在jsp頁面使用EL表示式無法解析spring mvcModel或者ModelAndView傳的值

1、在spring-mvc的配置檔案中已經配置jsp的檢視解析器 <bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">&

Spring MVCController如何將資料返回給頁面

要實現Controller返回資料給頁面,Spring MVC 提供了以下幾種途徑: ModelAndView:將檢視和資料封裝成ModelAndView物件,作為方法的返回值,資料最終會存到HttpServletRequest物件中! Model物件:通過給方法新增引用

spring mvc 通過controller 傳遞物件給jsp,並且資料繫結,在修改值回傳物件給controller

在controller 中需要指定 sessionAttribute的key @sessionattributes註解應用到Controller上面,可以將Model中的屬性同步到session當中。 當需要清除session當中的值得時候,我們只需要在

Spring-MVCModelAndView物件所新增的內容在前端用EL表示式獲取不到的問題

原來是IntelliJ IDEA預設生成的web.xml文件的頭部不正確 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "htt

關於spring-mvc使用ajax呼叫後臺接口出現400 bad request的問題解決方案

經過一段時間的學習。發現之前寫的這篇部落格 關於ajax 呼叫後臺 出現400bad request  有很大問題。特地重新編輯。 先描述下我的問題: 前端程式碼: function test() { $.ajax({ url:'

spring MVCajax請求路徑

spring MVC中ajax請求路徑 或 檔案載入路徑問題 在springMVC中,由於每個view一般都是一個放在統一路徑下的jsp,這些view由不同的controller來呼叫,但有可能兩個不同的controller會呼叫同一個view,而且這時候兩個controller的URL並不在同一層次,

使用HttpURLConnection呼叫url方式訪問spring mvc的controller並傳json值與返回

package com.zl.test2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import jav

spring mvc關於url傳遞中文亂碼的解決方法

般的 har rac color nco bytes utf8 int span 在傳值過程中,也是亂碼出現的頻繁地。先不說到底是什麽場景了,通常常用的方案有如下幾個 配置指定的filter <!-- 配置請求過濾器,編碼格式設為UTF-8,避免中文亂碼-->

spring mvc,如何在 Java 代碼裏,獲取 國際化 內容

source 所在 bundle 註入 pre 定義 pan col void 首先,在Spring的application.xml中定義 <bean id="messageSource" class="org.springframework.context.su

Spring MVC HandlerInterceptorAdapter的使用

date oar option 不定 list 異常 attribute std view 一般情況下,對來自瀏覽器的請求的攔截,是利用Filter實現的,這種方式可以實現Bean預處理、後處理。 Spring MVC的攔截器不僅可實現Filter的所有功能,還可以更精確的

Spring MVC 使用 Google kaptcha 驗證碼

實用 pri 集成 auto req post bsp produce target 驗證碼是抵抗批量操作和惡意登錄最有效的方式之一。 驗證碼從產生到現在已經衍生出了很多分支、方式。google kaptcha 是一個非常實用的驗證碼生成類庫。 通過靈