同 一個頁面,不同請求路徑,如何根據實際場景寫JS


場景:使用同一個“添加群成員”的頁面來操作

  1. 建群頁面:建群成功后,返回查看群成員頁面。在建群過程中直接添加群成員並返回一個群名稱的參數。
  2. 添加群成員頁面:在巳有群內添加群成員,添加成功后,返回查看群成員頁面。

分析:

使用同一個頁面,調兩種不同接口,從接口中可以看到,一個包含{groupId},另一個沒有

建群的接口為:/chat/vindicate/group

添加群成員的接口為:/chat/vindicate/group/{groupId}

  1. 在eclipse中需要做兩個頁面的渲染工作,其中使用相同的“添加群成員”頁面,需要做到變量一樣,接口路徑不一樣,需要在JS中根據{groupId}是否為空,做判斷
  2. 在eclipse中,沒有{groupId}的,要設{groupId}為空
  3. 以下顯示在eclipse中兩個頁面的渲染情況
//添加群成員
 @GET @Path("/add/member/{id}") public Viewable getmember(@PathParam("id") String id) { Map<String, Object> o = buildMap(); o.put("groupId", id);  //有ID的情況 //查詢可添加群成員
            o.put("url_search_group_member", buildResourceUrl("/chat/vindicate/group")); //添加群成員
            o.put("url_add_group_member", buildResourceUrl("/chat/vindicate/group/"+id)); //使用相同頁面,變量名稱要一樣,路徑不一樣,這個路徑有ID //返回查看群成員頁面
            o.put("url_member_list", buildControllerUrl("/group/list/"+id));  //添加群成員頁面在返回查看群成員頁面時不帶參數 return new Viewable("/group_add_member_list.ftl", o); } //新建群頁面
 @GET @Path("/add/list") public Viewable getAddGroup() { Map<String, Object> o = buildMap();
o.put(
"groupId", "");//沒有ID的情況,要設空值 //添加群成員 o.put("url_add_group_member", buildResourceUrl("/chat/vindicate/group"));//使用相同的頁面,變量一樣,路徑不一樣,這個沒有ID //查詢可添加群成員 o.put("url_search_group_member", buildResourceUrl("/chat/vindicate/group")); //返回查看群成員頁面 o.put("url_member_list", buildControllerUrl("/group/list/"));//新建群在返回查看群成員頁面時,要帶一個群名稱的參數,並且“添加群成員”的路徑中含有ID,在寫JS中同樣的要拼一個ID上去,兩個頁面要保持一致 return new Viewable("/group_add_member_list.ftl", o); }

在JS中這樣寫:

$.ajax({ type: "post", url: "${url_add_group_member}", //使用相同的變量,目的是只需要調用一次就可以了 data: ids, dataType: 'json', contentType: 'application/json;charset=utf-8', success: function(data) { //在調用成功下寫判斷, if(data.status == '200'){ if('${groupId}' == ''){  //返回相同頁面,區別建群需要帶參數返回,而添加群成員不需要帶參數返回,這里需要再做個判斷,{groupId}為空時, location.href = "${url_member_list}" + data.chatGroupId;  //跳轉頁面要加一個ID,參照eclipse中的寫法 sessionStorage.setItem(data.chatGroupId,data.chatGroupName); //跳轉的同時帶一個“群名稱”的參數,所以要本地保存這樣一個參數 }else{ location.href = "${url_member_list}"; //{groupId}不為空時,執行相同的跳轉頁面,eclipse中巳經添加ID,所以在這里無需再次添加ID } } }, error: function(data) { alert('新增失敗,服務器出錯'); } });

注意:在接口參數中有一個路徑有返回參數,因而需要把判斷寫在success中;如果沒有返回參數,可以把判斷寫在error中

到此,同一個頁面,不同請求路徑的實時場景功能完畢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM