需求是a服务器下页面b.jsp需要调用b服务器的action CoureseInfoProvideAction.java,用了JQuery+ajax技术,返回json类型的数据:
b.jsp:
<script type="text/javascript">
function showCourseInfo(){
var resourceCode = document.getElementById("resourceCode").value;
jQuery.getJSON("http://10.10.6.31:8099/coureseInfoProvide.jhtml?courseNumber="+resourceCode, function(data) {
if(data!="0"){
document.getElementById('resourceName').value = data.courseName;
document.getElementById('languageType').value = data.lang;
}else{
alert("课件编码不存在!!!");
}
});
}
</script>
<body>
<dt>
<label><span>*</span> 课件名称:</label>
</dt>
<dd>
<input type="text" class="default_txt" id="resourceName" name="resourceName"/>
</dd>
<dt>
<label><span>*</span> 课件编码:</label>
</dt>
<dd>
<input type="text" class="default_txt" id="resourceCode" name="resourceCode" value="112290_eng"/>
<input name="Button2" type="button" class="btn btn_default" οnclick="showCourseInfo()" value="Load…" />
</dd>
<dt>
<label>语言属性:</label>
</dt>
<dd>
<select id="languageType" name="languageType" class="mini_sel">
<option>-请选择-</option>
<option value="1">中文</option>
<option value="0">英文</option>
<option value="-1">其他</option>
</select>
<input type="text" class="default_txt" id="languageNote" name="languageNote"/>
</dd>
</body>
CoureseInfoProvideAction.java:
public String process() throws Exception {
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Headers", "x-requested-with");
PrintWriter out = response.getWriter();
if(StringUtil.isBlank(courseNumber)){
Course course = courseService.getValidCourse(courseNumber);
if(course!=null){
StringBuilder sb = new StringBuilder();
String courseName = course.getCourseName();
sb.append("{");
sb.append("\"");
sb.append("courseName");
sb.append("\"");
sb.append(":");
sb.append("\"");
sb.append(courseName);
sb.append("\"");
Integer lang = course.getLang();
sb.append(",");
sb.append("\"");
sb.append("lang");
sb.append("\"");
sb.append(":");
sb.append("\"");
sb.append(lang);
sb.append("\"");
sb.append("}");
out.print(sb.toString());
course = null;
}else{
out.print("0");
}
}
return null;
}
在CoureseInfoProvideAction.java中增加了response对header的处理,用于对跨域提交参数的支持,在StringBuilder中把字符串组装成了json的格式,在页面便于解析、接收参数。