jquery代码firefox不执行,click事件需要单击两次?求帮助

Tj021sh 2013-07-10 11:03:20
$("#clears").click(function(){
$.post("clearall.php",{pagecount:pagecount},function(data){
alert(data);
if (pagecount==data){
$("#numbers").html("0S");
$("#storages").html("0GB");}
});

clearall.php是一个数组清空页面,用alert测试能针对性地清空session数组
jquery在调用的过程中在ie下能执行上述代码,但问题是有时候我要点击两次才能异步刷新?有时候点一次就行!

在firefox里该段代码就不执行(其他的$.post传值可以执行),chrome里面又和ie一样可以执行

搞不清楚问题到底出在哪里,有人遇到过吗?
...全文
332 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
苹果没有皮 2013-07-17
  • 打赏
  • 举报
回复
异步请求,alert在回调函数执行前就运行了吧,把alert放到回调函数里面去试一下
阿鱼 2013-07-16
  • 打赏
  • 举报
回复
6楼正解。 1.所谓异步请求,异步就在于不会等请求结束才运行请求后的代码, 而是请求($.post("clearall.php",{pagec...)发出后不管请求是否立即完成便会执行下面的代码(alert(isclear)),等到请求完成的时候就会立即执行回调函数(function(data){...})。 2.如果你需要根据请求完成后的结果来进行相关操作,你需要把相关操作放在function(data){...}中)。比如,你可以把alert(isclear)放在其中:function(data){if{..}else{...};alert(isclear)}。
小伙写代码 2013-07-16
  • 打赏
  • 举报
回复
你可以定义一个函数,然后在post内部执行该函数
小伙写代码 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 tj021sh 的回复:
恩 恩 其实问题不在这里 我查了一下 是因为js里面的参数仍旧保留原值的问题,现在又有个新问题 ,大致是这样的:

var isclear=1;
$("#clears").click(function(){ 
$.post("clearall.php",{pagecount:pagecount},function(data){
	if (data==pagecount){
		isclear=0;} //清空返回的值如果得到确认,则消除选择框
		else{
		isclear=1;} //清空返回的值没有得到确认,则勾选选择框
		
});
alert(clear); //这里总是1啊,和一开始设置的全局变量有关系吗?
post中能将isclear传递为0 但是跳出post之后 isclear又变为1了,页面加载的内容必须在post之外编写,请问为什么isclear没有传值呢?
异步的执行顺序就是这样的 js的执行顺序会跳过异步,也就是说当JS运行到POST的时候他不会等待你异步处理完再执行后面的方法,而是直接执行你下面的JS语句,所以永远是1
  • 打赏
  • 举报
回复
检查data和pagecount吧, console log或者alert一下,看看分别是什么?
  • 打赏
  • 举报
回复
$(document).on("click", "#clears", function() {
   $.post("clearall.php",{pagecount:pagecount},function(data){
   alert(data);
   if (pagecount==data){
    $("#numbers").html("0S");	
    $("#storages").html("0GB");
   }
}).
UEAnswer 2013-07-11
  • 打赏
  • 举报
回复
看不出来楼主代码有什么问题,等高手讲解原因。
Tj021sh 2013-07-11
  • 打赏
  • 举报
回复
恩 恩 其实问题不在这里 我查了一下 是因为js里面的参数仍旧保留原值的问题,现在又有个新问题 ,大致是这样的:

var isclear=1;
$("#clears").click(function(){ 
$.post("clearall.php",{pagecount:pagecount},function(data){
	if (data==pagecount){
		isclear=0;} //清空返回的值如果得到确认,则消除选择框
		else{
		isclear=1;} //清空返回的值没有得到确认,则勾选选择框
		
});
alert(clear); //这里总是1啊,和一开始设置的全局变量有关系吗?
post中能将isclear传递为0 但是跳出post之后 isclear又变为1了,页面加载的内容必须在post之外编写,请问为什么isclear没有传值呢?
  • 打赏
  • 举报
回复
$("#clears").click(function(){ $.post("clearall.php",{pagecount:pagecount},function(data){ alert(data); if (pagecount==parseInt(data)){ $("#numbers").html("0S"); $("#storages").html("0GB");} });

87,991

社区成员

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

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