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

由于一中考评系统要加入一个新的功能“调查问卷”,我想沿用别人做好的调查问卷,用别人的有一个好处就是:人家做的专业,界面美化等非常人性化,但是它需要你每次设置完调查问卷后发布一下网址,客户端访问的每次都是变动的地址。

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

复制代码 代码如下:

<li><a 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调用完成后才会触发,就得到了想要的结果。

时间: 2024-08-03 13:55:29

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

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

由于一中考评系统要加入一个新的功能"调查问卷",我想沿用别人做好的调查问卷,用别人的有一个好处就是:人家做的专业,界面美化等非常人性化,但是它需要你每次设置完调查问卷后发布一下网址,客户端访问的每次都是变动的地址. 客户端每次点击"调查问卷",就会跳转到相应页面:   点击"调查问卷"即进入调查问卷页面:   我使用a 标签,每次访问管理员提交的"调查问卷" 复制代码 代码如下: <li><a href=&q

Ajax向后台传json格式的数据出现415错误的原因分析及解决方法_AJAX相关

问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById("uuid").value; var idCard = document.getElementById("idCard").value; alert(uuId+idCard); // var result = new Object(); // result.uuId = uuI

js onclick给A标签href赋值效果代码

html  代码如下 复制代码 <a id="a1" href="" class="bt" onclick="xx()"> 下一步 </a> <input name="dizhi" type="radio" id="dizhi" onclick="doTest()" value="<?php echo

Jquery Ajax请求文件下载操作失败的原因分析及解决办法

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来分析一下失败的原因 一.失败的原因 那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png.文件下载等,然而ajax请求只是个"字符型"的请求,即请求的内容是以文本类型存放的.文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白

ajax实现点击不同的链接让返回的内容显示在特定div里_AJAX相关

/* 以下代码通过ajax实现在一个web页面点击不同的链接,然后将返回的结果显示在该页面固定的div里. */ <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script language="javascript"> var http_request = false; function create

Ajax中数据传递的另一种模式 javascript Object Notation思想(JSON)_AJAX相关

Ajax是"异步javascript和XML"的缩写已经众所周知,然而虽然XML是看上去的重要组成部分,它却不是必须的.一位资深的软件工程师Douglas Crock ford 开发了一个内建于 javascript 的数据格式,称为javascript 对象表示(JSON,javascript Object Notation),意思是直接使用Ajax对象来传递信息,可以读作"Jason". 1. 什么是 JSON JSON概念很简单,JSON 是一种轻量级的数据格

AJAX初级应用-RSS无刷新聚合器的代码与下载第1/3页_AJAX相关

rss.js 复制代码 代码如下: <!-- //控制ID function getId(objId){     return document.getElementById(objId) } //链接对应数组,请注明转载自http://www.cnrui.cn/blog function urlArrary(urlName){     switch(urlName){         case "clear":             return "http://w

关于include标签导致js路径找不到的问题分析及解决

关于使用jsp:include标签及<%@ include标签时要注意的事项 先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别) jsp:include是先编译一下included.jsp文件,然后再包含(先编译,后包含) @ include是先把文件包含就来,然后统一编译(先包含,后编译) 今天下午想把Jquery集成到项目中,发现怎么样都会出问题.原因就是路径问题. 在集成时,我的思路是写一个公共JSP文件,里面包含一些常用的js文件,当然此处我用的就是Jquery插件了. 但写

JQuery ajax 返回json时出现中文乱码该如何解决_AJAX相关

使用jQuery ajax调用的返回json,中文乱码问题 Js代码如下: $.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return j