ajax 动态为<a> href 赋值,总是不执行的原因
来源:互联网 发布:windows最近更改了硬件 编辑:程序博客网 时间:2024/06/05 03:44
问题是这样的:
<a href="JavaScript:void(0)" onclick="loadSalesInfo(this,'<bean:write name="list" property="custNo"/>')">拨打</a>
点击“拨打”,调用loadSalesInfo函数,该函数通过jquery的ajax调用返回是否限制拨打,如代码:
var vlink;function loadSalesInfo(link,salesNo){ var queryUrl="/servlet/AjaxValid"; vlink = link; jQuery.post(queryUrl,{method:'newChanceControl'},function(result){ var flag = result; if(flag == '0'){ alert("提示:当前时间不允许外拨!"); return false; }else{ if(vlink.disabled==false){ vlink.target="leftframe"; vlink.disabled=true; vlink.href="salesBaseAction.do?method=loadCustForSalesByCustNo&custno="+salesNo; }else{ vlink.target=""; vlink.href="JavaScript:void(0)"; } } });}
现象是vlink.href可以正常执行,但是总是不调用action。经过一天的郁闷,终于知道原因了:因为ajax默认调用是异步的,所以不等ajax调用处理回调函数为href赋值就直接发起了href,所以第一次点击不会调用action,第二次点击的时候会调用action,这是因为第一次ajax执行完成为href赋值了。另外<a> 属性onclick的优先级高于href,所以onclick return false就可以不执行href了。
解决方法:将ajax调用方法改为同步,方法为加上全局变量,声明ajax调用为同步:
$.ajaxSetup({ async : false});
这样href的执行就必须等待function中ajax调用完成后才会触发,就得到了想要的结果。
- ajax 动态为<a> href 赋值,总是不执行的原因
- ajax 动态为<a> href 赋值,总是不执行跳转的原因
- $.ajax返回不执行success的原因
- $.ajax返回不执行success的原因
- Jquery ajax不执行success的原因
- 动态为a标签的href中添加参数
- IE6 a href onclick 执行顺序 && IE6下a标签发ajax请求的深坑
- Jquery ajax json 不执行success的原因 坑爹
- ajax+struts2不执行回调函数的原因解析
- jquery ajax success中的函数不执行的原因
- Jquery ajax json 不执行success的原因
- JQuery ajax json 不执行success的原因
- Jquery ajax json 不执行success的原因
- Jquery ajax json 不执行success的原因 坑爹
- 请求ajax失败或者不执行的原因
- 怎样使AJAX有利于SEO:为使用JS和AJAX动态加载的内容制定href
- HTML的a标签href设为零操作的原因和方式
- 关于ajax中执行 window.location.href不跳转问题
- java初学者必读
- 值得深思的一个c程序
- 初始化字符数组
- java 洗牌
- 如何:实现简单的 Forms 身份验证
- ajax 动态为<a> href 赋值,总是不执行的原因
- 10个超炫超有用的js库/插件
- 1 JVM简介
- C语言之软件开发概述
- JVM 常量池理解
- Spring的事务配置
- 关于“工作没有挑战性”
- 黑马程序员_面向对象的应用
- GoF设计模式意图与类图