实在是没办法了,求解决(jsonp)

你好毒你好毒 2013-03-26 04:15:39
为了解决跨域ajax因此用了jsonp来进行服务器的请求和回调
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天了,求大神解围
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
你好毒你好毒 2013-03-27
  • 打赏
  • 举报
回复
~~~~~没神了吗?
你好毒你好毒 2013-03-26
  • 打赏
  • 举报
回复
引用 6 楼 abcmsnet 的回复:
既然使用了ajax为什么不使用成熟的jquery的ajax.get和post,目前在IE6-IE9请求都是正常的。
可否给个例子翘翘,拜托
  • 打赏
  • 举报
回复
既然使用了ajax为什么不使用成熟的jquery的ajax.get和post,目前在IE6-IE9请求都是正常的。
你好毒你好毒 2013-03-26
  • 打赏
  • 举报
回复
引用 2 楼 notepads 的回复:
callbackFn=callback???
我只是举个例子比如参数是callbackFn参数的值是callback
notepads 2013-03-26
  • 打赏
  • 举报
回复
callback=callbackFn
你好毒你好毒 2013-03-26
  • 打赏
  • 举报
回复
引用 1 楼 tianma630 的回复:
无视IE。。
呵呵,没办法 互联网的东西 你懂的
notepads 2013-03-26
  • 打赏
  • 举报
回复
callbackFn=callback???
tianma630 2013-03-26
  • 打赏
  • 举报
回复
无视IE。。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧