js请求服务器端的代码如下:
/*
*用于像服务器发送请求
*/
function httpRequest(url) {
var SCRIPT_BLOCK = document.createElement("script");
SCRIPT_BLOCK.src = "";
SCRIPT_BLOCK.src = url + "&random=" + new Date();
SCRIPT_BLOCK.type = "text/javascript";
SCRIPT_BLOCK.language = "javascript";
document.getElementsByTagName("head")[0].appendChild(SCRIPT_BLOCK);
}
如果向某个action发送请求则这样调用:
var requestURL= 'http://*.*.*.*:*/test/test.action?callbackFn=callback';
httpRequest(requestURL);
那么我会提供一个函数由服务器端来回调:
function callback(v) {
alert(v);
}
服务器端简单代码如下(java):
private String callbackFn;
/**省略callbackFn的get、setter方法**/
protected void print(String outStr) {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/javascript");
try {
response.getWriter().print(outStr);
} catch (IOException e) {
e.printStackTrace();
}
}
public String execute() throws Exception {
print(callbackFn + "('test')");
}
按照上面的做法基本上不会有问题,但是在IE9的非兼容模式下有请求无响应,意思就是说请求已经到了服务器端,但是回调不成功,所以在IE9下面非要选择浏览器上面的兼容模式才可以运用,这个问题折磨了我2天了,求大神解围