Jquery的ajax第二次不发送请求,请帮忙看一下原因。

function lbtnStop_Click(operateType) {
var rows = grid.getSelecteds();
var l = rows.length;
if (l == 0) {
AlertErrorMessage("x0001");
}
else {
var s = "";
for (var i = 0; i < l; i++) {
var row = rows[i];
s += row.ID;
if (i != l - 1)
s += "|";
};

$.ajax({
url: "/Controls/MiniUI/Data/AjaxFinishDataService.ashx",
Type: "post",
data: {
ids: s,
operateType: operateType,
bllclassName: "Sale.Sale_QuotationSheetDetail",
finishInMaster: false
},
success: function (text) {
if (text == "True") {
alert("操作成功!");
grid.reload();
}
else
alert(text);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
}
}

在首次执行的时候,/Controls/MiniUI/Data/AjaxFinishDataService.ashx页面可以接收到请求,但 lbtnStop_Click方法第二次执行的时候, AjaxFinishDataService.ashx页面就没有接收到请求了,请问大家这个是怎么回事呢?
...全文
588 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
a471278514 2014-05-04
  • 打赏
  • 举报
回复
所以一般url后面都会加一个随时会变的参数吗? 像这样? &rand=" + new Date().toString()
跳动de指尖 2014-05-04
  • 打赏
  • 举报
回复
引用 9 楼 Return_false 的回复:
如果http请求是同一个请求,那么浏览器会把数据缓存起来,下载再去请求时,如果缓存过了,那么直接从缓存中取数据,当然+随机参数也可以解决,原理就是让浏览器不看做同一个请求
我觉得不对吧,post请求浏览器不会缓存的。
来撕特成 2014-05-04
  • 打赏
  • 举报
回复
var s 定义的是一个局部变量,ajax调用时能识别吗?
  • 打赏
  • 举报
回复
通常只有在ie中才有关于“无缘无故就进行浏览器客户端缓存”的bug。在其它大品牌的浏览器中,似乎很少有类似bug。我几乎只在ie浏览器中才需要手动“删除缓存”操作。 正常情况下,并不会无缘无故“浏览器客户端缓存”。除非你的页面设计有bug,从而发送了错误的head给浏览器端。 jQuery的这个,会自动为请求(但是只是针对个别请求,而不是全部)加入"={timestamp}"这类时间戳。这是不管你是否发送了错误的head给浏览器端,也都会加入这个时间戳。 但是 ajaxSetting 中 cache 的默认值是true,也就是并不加入这个时间戳。用true做为默认值,就足以说明,正常情况下是不需要考虑这个什么客户端缓存的。
  • 打赏
  • 举报
回复
http://www.cnblogs.com/jianjialin/archive/2009/07/01/1514475.html 跟浏览器客户端cache并没有直接的关系,不要仅仅从浏览器角度去猜这个原因。它就是jQuery内部另外规定的cache机制!
十三- 2014-05-01
  • 打赏
  • 举报
回复
引用 10 楼 wggfcusmq 的回复:
[quote=引用 8 楼 Mockqi 的回复:] [quote=引用 7 楼 wggfcusmq 的回复:] 取缓存和目标页能不能接收到请求有什么关系呢?
去缓存就不会去请求你的URL地址 自然接收不到[/quote] 好吧,多谢了。 但我之前的ajax也没有cache:false 但没有出现这种情况。 不知道它是在什么情况下才会直接取取缓存结果?还有取缓存结果,是个什么情况,是直接取目标页上次返回来的结果吗?[/quote] 你每次请求服务器,本地会有你数据请求记录的,再次请求的时候会和服务器对比,一样的就不会再去取,直接就是你之前的数据,请求地址后面加个随机参数,或者像这样请求前清除缓存..
zhouxiulu 2014-04-30
  • 打赏
  • 举报
回复
url: "some.php?id="+datetime.now,
zhouxiulu 2014-04-30
  • 打赏
  • 举报
回复
url: "some.php"+datetime.now,
  • 打赏
  • 举报
回复
引用 8 楼 Mockqi 的回复:
[quote=引用 7 楼 wggfcusmq 的回复:] 取缓存和目标页能不能接收到请求有什么关系呢?
去缓存就不会去请求你的URL地址 自然接收不到[/quote] 好吧,多谢了。 但我之前的ajax也没有cache:false 但没有出现这种情况。 不知道它是在什么情况下才会直接取取缓存结果?还有取缓存结果,是个什么情况,是直接取目标页上次返回来的结果吗?
  • 打赏
  • 举报
回复
如果http请求是同一个请求,那么浏览器会把数据缓存起来,下载再去请求时,如果缓存过了,那么直接从缓存中取数据,当然+随机参数也可以解决,原理就是让浏览器不看做同一个请求
  • 打赏
  • 举报
回复
引用 7 楼 wggfcusmq 的回复:
取缓存和目标页能不能接收到请求有什么关系呢?
去缓存就不会去请求你的URL地址 自然接收不到
  • 打赏
  • 举报
回复
取缓存和目标页能不能接收到请求有什么关系呢?
  • 打赏
  • 举报
回复
引用 3 楼 wggfcusmq 的回复:
[quote=引用 1 楼 Return_false 的回复:] cache:false
$.ajax({
   type: "POST",
   url: "some.php",

   cache:false,
    success: function(msg){
      alert( "Data Saved: " + msg );
   }
 });
这样改了就可以了,请问这是什么原因呢?[/quote] 浏览器缓存啊 如果请求相同的URL ,浏览器就会去取缓存,so。。
tossgoon 2014-04-30
  • 打赏
  • 举报
回复
改成同步试试:async: false $.ajax({ type: "POST", url: "some.php", async: false, success: function(msg){ alert( "Data Saved: " + msg ); } });
  • 打赏
  • 举报
回复
在 /Controls/MiniUI/Data/AjaxFinishDataService.ashx 加一个随机数 /Controls/MiniUI/Data/AjaxFinishDataService.ashx?t=Math.random()
  • 打赏
  • 举报
回复
引用 1 楼 Return_false 的回复:
cache:false
$.ajax({
   type: "POST",
   url: "some.php",

   cache:false,
    success: function(msg){
      alert( "Data Saved: " + msg );
   }
 });
这样改了就可以了,请问这是什么原因呢?
  • 打赏
  • 举报
回复
清空浏览器的缓存后又能成功执行一次,第二次又不行了。
  • 打赏
  • 举报
回复
cache:false
$.ajax({
   type: "POST",
   url: "some.php",

   cache:false,
    success: function(msg){
      alert( "Data Saved: " + msg );
   }
 });

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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