PhoneGap应用程序不会连续两次查询服务器
PhoneGap app doesn't query the server two times in a row
情况如下:
我有一个PhoneGap应用程序和Tomcat服务器。应用程序通过$向服务器查询一些数据。ajax POST调用并显示。
我第一次尝试执行查询按一些按钮我在我的应用程序UI上一切顺利,发生的是,如果我第二次尝试同样的事情,服务器没有得到查询和应用程序显示相同的数据它做了最后一次。看起来它正在捕捉应用内浏览器中的数据…
任何想法如何使应用程序实际查询服务器每次?
非常感谢!
编辑:这是我的代码
PhoneGap代码:
function showDialog() {
var sessionid = window.localStorage.getItem("sessionid");
$.mobile.showPageLoadingMsg();
$.ajax({
type: "POST",
url: "https://192.168.7.56:8443/Mobile_Signature/service/pdf-signature",
data: { action : "get-txcertificates" , sessionid : sessionid },
success: function(result) {
$.mobile.hidePageLoadingMsg();
CertificatesDialog.show(function() {}, function() {alert("some error");}, JSON.parse(result));
}
});
}
下面是servlet代码,它接收POST查询并且只在第一次被调用:
if (request.getParameter("action").equals("get-txcertificates")) {
System.out.println("Obtaining certificates");
String user = DataController.getInstance().getUserID(sessionid);
String access_token = DataController.getInstance()
.getTxAccessToken(sessionid);
try {
System.out.println("getting certificates with user " + user
+ " and accesstoken: " + access_token);
X509Certificate[] certs = ServiceFactory.getServiceWrapper(
ServiceFactory.SW_SERVICE).getUserCertificates(user,
access_token);
JSONArray certsArray = new JSONArray();
for (X509Certificate c : certs) {
System.out.println("dn: " + c.getSubjectDN().toString());
certsArray.put(c.getSubjectDN().toString());
}
response.getWriter().print(certsArray);
} catch (NoSuchMethodException | MessageNotAuthenticatedException e) {
e.printStackTrace();
}
找到了一个虚拟的解决方案来避免在iOS 6中缓存POST请求:
生成一个随机数,并将其作为参数添加到请求中。像这样:
var randomnumber = Math.floor(Math.random()*1001);
$.ajax({
type: "POST",
url: "http://yoururl/yourservice",
data: { foo : "bar" , nocaching : randomnumber },
success: successCallback
});
通过添加randomnumber参数,每个POST请求对浏览器来说看起来都不一样,所以它不再缓存它。无论如何,服务器不读取它
希望对大家有所帮助
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- j查询克隆表单在同一页面中不起作用两次
- j查询点击事件触发两次
- 角度 ui 路由器可选查询参数加载控制器两次
- 如何在两次约会之间进行脸书查询以获得帖子
- ECONNRESET一行查询数据库两次写错误[Node.js]
- 帆JS两个查询第二次失败先删除
- 如何使用when.js的承诺从node.js对redis进行两次查询
- PhoneGap应用程序不会连续两次查询服务器