ajax动态为a标签href赋值不执行跳转的原因分析及解决

小小少年哈哈1

小小少年哈哈1

2016-02-19 09:44

下面图老师小编跟大家分享一个简单易学的ajax动态为a标签href赋值不执行跳转的原因分析及解决教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!
由于一中考评系统要加入一个新的功能“调查问卷”,我想沿用别人做好的调查问卷,用别人的有一个好处就是:人家做的专业,界面美化等非常人性化,但是它需要你每次设置完调查问卷后发布一下网址,客户端访问的每次都是变动的地址。

客户端每次点击“调查问卷”,就会跳转到相应页面:
 
点击“调查问卷”即进入调查问卷页面:
 
我使用a 标签,每次访问管理员提交的“调查问卷”
代码如下:

lia href="" onclick="meizz(this)"调查问卷/a/li

点击“调查问卷”,调用meizz函数,该函数通过ajax调用返回要访问的“调查问卷”网址:
代码如下:

script type="text/javascript" language="javascript"
function meizz(e) {
$.ajax({
//async:false, //设置ajax的同步
type: "get", //get方式
url: "../handler/QueryQuestionnaire.ashx",
//返回数据成功,将返回的json数据解析,显示在课程信息列表中
success: function (strJson) {
//检查后台返回的数据
var dataArray = eval(strJson);
e.href = dataArray[0].Questionnaire;//要访问的网址
},
//返回数据失败,弹出错误显示
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
});
}
/script

现象是 e.href如果放在函数的$.ajax之上可以运行,但是放到ajax里面绑定动态返回的地址,就不能运行了。经过了郁闷,最终找到了答案:因为ajax默认调用是异步的,所以不等ajax调用处理回调函数为href赋值,就直接发起了href,在这里这时候href是空值。

解决方法:将ajax调用方法改为同步,声明ajax调用方式为同步:
代码如下:

$.ajax({
async:false, //设置ajax的同步
}

这样href的执行就必须等待function中ajax调用完成后才会触发,就得到了想要的结果。
展开更多 50%)
分享

猜你喜欢

ajax动态为a标签href赋值不执行跳转的原因分析及解决

Web开发
ajax动态为a标签href赋值不执行跳转的原因分析及解决

MODEM不执行拨号操作的原因及解决方法

电脑入门
MODEM不执行拨号操作的原因及解决方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Windows变慢原因分析及解决方法

windows 操作系统
Windows变慢原因分析及解决方法

教你分析键盘失灵的原因及解决方案

电脑入门
教你分析键盘失灵的原因及解决方案

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

摄影照片模糊的原因分析及解决方法

摄影技巧 摄影入门
摄影照片模糊的原因分析及解决方法

冬季空调不制热的原因及解决办法

生活常识
冬季空调不制热的原因及解决办法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

聊天室php&mysql(一)

聊天室php&mysql(一)

QQ餐厅是否可以邀请好友开通?

QQ餐厅是否可以邀请好友开通?
下拉加载更多内容 ↓