使用$.ajax得不到返回值(不执行success后代码)

问题:使用$.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;
    }

猜你喜欢

转载自blog.csdn.net/lsh15846393847/article/details/82862474