我有一个条形码枪,当我扫描条形码时它将运行以下功能,但是当我扫描5-6条形码太快时它会提供重复数据
此外,我需要异步才能成为现实,否则它会很慢 有没有办法解决这个问题,所以我没有重复数据?
function getUnReadBox() {
$("#unReadBoxList").children().remove('li') ;
$.ajax({
dataType: "json",
url: xxxx.php ,
success: saveUnRead ,
error: function ( xhr , b , c ) {
$("#reportMsg").html ( "error" ) ; },
async: true });
}
function saveUnRead ( json ) {
var i ;
var new_item ;
var msg ;
for ( i in json ) {
new_item = '<li>' + json[i].PACKAGE_ID + "</li>" ;
$("#unReadBoxList").append ( new_item ) ;
scShipping.unReadBox ++ ;
$("#unReadBox").html ( msg ) ;
}
$("#unReadBoxList").listview('refresh') ;
}
修改
我添加了
$("#unReadBoxList").children().remove('li') ;
var d = new Date();
var num = d.getTime();
var mySQL = scShipping.jsonUrl+'scTripUnRead.php?T='+scShipping.tripId+"&O="+scShipping.whichOp+"?date="+num ;
$.ajax({
dataType: "json",
url: mySQL ,
success: saveUnRead ,
error: function ( xhr , b , c ) {
$("#reportMsg").html ( "error" ) ; },
async: true });
}
但我仍然得到重复的数据
答案 0 :(得分:0)
我遇到了和以前一样的问题。我得到的解决方案是在调用php程序时传入数字时间戳作为参数,或者传入日期作为参数。例如:
xxxx.php?date = 2014-03-28 20:54:52:03
它对我有用,我希望它也适合你......
答案 1 :(得分:0)
这种情况可能是因为网络浏览器缓存了您请求的数据,避免这种情况您可以尝试这些:
在您的请求中使用POST
代替GET
。在POST
方法的参数中将type
分配给$.ajax
。
禁用缓存。在false
方法的参数中将cache
分配给$.ajax
。
将附加参数和值附加到网址,随机数或时间戳,例如xxxx.php?t=Math.random()
或xxxx.php?t=new Date()
。这些确保您的请求网址不同,并且不会缓存响应数据。
答案 2 :(得分:0)
就像@ user3311636建议的那样,你可以在你的Ajax调用代码上添加一个额外的参数。因此服务器或浏览器不会缓存响应。
尝试这样(这是@ user3311636答案,我只是为了清晰目的而包含整个功能)
$.ajax({
dataType: "json",
url: "xxxx.php?date=2014-03-28 20:54:52:03" ,
success: saveUnRead ,
error: function ( xhr , b , c ) {
$("#reportMsg").html ( "error" ) ; },
async: true });