使用$.ajax得不到返回值(不執行success後代碼)
阿新 • • 發佈:2019-02-15
問題:使用$.ajax更新動態更新dropDownList顯示內容時,接收頁面得不到返回值。無法執行success後代碼。
js程式碼:
function set() { var postData = { keyword : $("#keyword").val(), kaisiNendo : $("#kaisiNendo").val(), gyoumu : $("#gyoumu").val(), } $.ajax({ url : sofia.contextPath() + "/keiyaku/wfgs2000/wfgs2011/get.do", dataType : "json", async : false, type : "post", data : postData, success : function(result) { sofia.ui.applyDropDownList('gyousyu', result.list); } }) }
java後臺程式碼:
public void get(Wfgs2011Dto wfgs2011Dto, AjaxOutputStreamWrapper output) throws Exception { ArrayList<LabelValueBean> list = new ArrayList<LabelValueBean>(); list = ListGeneratorKeiyaku.generate(ListKbnKeiyaku.SelectBox, false,Constants.KYK_KBNTYPE_KENSETU_KOUJI_SHINSEI); JSONObject result = new JSONObject(); result.put("list", list); FacadeUtils.writeJson(result, output); } }
result.put("list", list);//
如果這樣直接返回到js,則返回的result中的資料不是json型別,所以js頁面無法獲取資料。所以需要在返回之前將list轉化為json格式
public void get(Wfgs2011Dto wfgs2011Dto, AjaxOutputStreamWrapper output) throws Exception { ArrayList<LabelValueBean> list = new ArrayList<LabelValueBean>(); list = ListGeneratorKeiyaku.generate(ListKbnKeiyaku.SelectBox, false,Constants.KYK_KBNTYPE_KENSETU_KOUJI_SHINSEI); JSONObject result = new JSONObject(); result.put("list", BeanUtility.toJSONArray(list)); FacadeUtils.writeJson(result, output); } } /** * ListからJSONArrayへの変換 * * @param list * 対象リスト * @return 変換したJSONArray * @throws Exception */ public static JSONArray toJSONArray(List list) throws Exception { // JSON配列に変換 JSONArray jsonList = new JSONArray(); for (Object object : list) { JSONObject json = new JSONObject(); Map map = BeanUtils.describe(object); //class情報が付加されるので削除 if (map.containsKey("class")) { map.remove("class"); } //String型のnullを空文字に変換 //nullが入っているとJSONValue.parseでnullの次のkeyが抜け落ちて取得されるため Iterator it = map.keySet().iterator (); while (it.hasNext()) { Object key = it.next(); if (map.get(key) == null) { if (object.getClass().getDeclaredField(key.toString()).getType() == String.class) { map.put(key, ""); } } } json.putAll(map); jsonList.add(json); } return jsonList; }