我使用JsonpRequestBuilder在另一个站点上执行url。请关注我的代码:
public void execute() {
JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
jsonp.requestObject(url, new AsyncCallback<JavaScriptObject>() {
public void onFailure(Throwable throwable) {
}
public void onSuccess(JavaScriptObject jso) {
JsArray<AdminSessionData> entries = asStartArrayOfResultData(jso);
AdminSessionData entry = entries.get(0);
if (entry.getSuccess()) {
eventBus.fireEvent(new LogoutEvent());
}
}
});
}
我的代码在Chrome和FireFox上运行良好,但我遇到了IE问题。 使用IE,第一次执行时运行良好,但第二次执行时,url无法执行,因为IE在第一次运行时通过url缓存此结果。 你看到这个问题了吗?请告诉我你的建议。感谢
答案 0 :(得分:0)
你在devMode下运行吗?你在ProdMode中测试过吗?
如果从IE浏览网络控制台,你能看到什么?
您是否对缓存持肯定态度,因为该代码很常见......
答案 1 :(得分:0)
Jsonp使用脚本标记,这意味着它向服务器发出GET请求。
传统上,即使请求具有查询字符串,IE也缓存了GET请求,因此正常的解决方法是更改每个请求中的查询字符串。
但是每次创建新的JsonpRequest
时gwt都会更改回调参数,因为它会创建一个具有唯一名称的新临时回调函数,因此除非重用JsonpRequest
,否则不会有任何问题。
你可以做的最安全的事情就是更改服务网址,添加一个随机参数,如下所示:
String sendUrl = (url.contains("?") ? "&" : "?") +
"foo=" + Duration.currentTimeMillis()