ajax動(dòng)態(tài)為a標(biāo)簽href賦值不執(zhí)行跳轉(zhuǎn)的原因分析及解決
更新時(shí)間:2013年06月16日 15:52:05 作者:
ajax 動(dòng)態(tài)為a標(biāo)簽的href屬性賦值,總是不執(zhí)行跳轉(zhuǎn)的原因想必大家有遇到過(guò)吧,下面與大家分享下具體的解決方法,希望對(duì)你有所幫助
由于一中考評(píng)系統(tǒng)要加入一個(gè)新的功能“調(diào)查問卷”,我想沿用別人做好的調(diào)查問卷,用別人的有一個(gè)好處就是:人家做的專業(yè),界面美化等非常人性化,但是它需要你每次設(shè)置完調(diào)查問卷后發(fā)布一下網(wǎng)址,客戶端訪問的每次都是變動(dòng)的地址。
客戶端每次點(diǎn)擊“調(diào)查問卷”,就會(huì)跳轉(zhuǎn)到相應(yīng)頁(yè)面:
點(diǎn)擊“調(diào)查問卷”即進(jìn)入調(diào)查問卷頁(yè)面:
我使用a 標(biāo)簽,每次訪問管理員提交的“調(diào)查問卷”
<li><a href="" onclick="meizz(this)">調(diào)查問卷</a></li>
點(diǎn)擊“調(diào)查問卷”,調(diào)用meizz函數(shù),該函數(shù)通過(guò)ajax調(diào)用返回要訪問的“調(diào)查問卷”網(wǎng)址:
<script type="text/javascript" language="javascript">
function meizz(e) {
$.ajax({
//async:false, //設(shè)置ajax的同步
type: "get", //get方式
url: "../handler/QueryQuestionnaire.ashx",
//返回?cái)?shù)據(jù)成功,將返回的json數(shù)據(jù)解析,顯示在課程信息列表中
success: function (strJson) {
//檢查后臺(tái)返回的數(shù)據(jù)
var dataArray = eval(strJson);
e.href = dataArray[0].Questionnaire;//要訪問的網(wǎng)址
},
//返回?cái)?shù)據(jù)失敗,彈出錯(cuò)誤顯示
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
});
}
</script>
現(xiàn)象是 e.href如果放在函數(shù)的$.ajax之上可以運(yùn)行,但是放到ajax里面綁定動(dòng)態(tài)返回的地址,就不能運(yùn)行了。經(jīng)過(guò)了郁悶,最終找到了答案:因?yàn)閍jax默認(rèn)調(diào)用是異步的,所以不等ajax調(diào)用處理回調(diào)函數(shù)為href賦值,就直接發(fā)起了href,在這里這時(shí)候href是空值。
解決方法:將ajax調(diào)用方法改為同步,聲明ajax調(diào)用方式為同步:
$.ajax({
async:false, //設(shè)置ajax的同步
}
這樣href的執(zhí)行就必須等待function中ajax調(diào)用完成后才會(huì)觸發(fā),就得到了想要的結(jié)果。
客戶端每次點(diǎn)擊“調(diào)查問卷”,就會(huì)跳轉(zhuǎn)到相應(yīng)頁(yè)面:

點(diǎn)擊“調(diào)查問卷”即進(jìn)入調(diào)查問卷頁(yè)面:

我使用a 標(biāo)簽,每次訪問管理員提交的“調(diào)查問卷”
復(fù)制代碼 代碼如下:
<li><a href="" onclick="meizz(this)">調(diào)查問卷</a></li>
點(diǎn)擊“調(diào)查問卷”,調(diào)用meizz函數(shù),該函數(shù)通過(guò)ajax調(diào)用返回要訪問的“調(diào)查問卷”網(wǎng)址:
復(fù)制代碼 代碼如下:
<script type="text/javascript" language="javascript">
function meizz(e) {
$.ajax({
//async:false, //設(shè)置ajax的同步
type: "get", //get方式
url: "../handler/QueryQuestionnaire.ashx",
//返回?cái)?shù)據(jù)成功,將返回的json數(shù)據(jù)解析,顯示在課程信息列表中
success: function (strJson) {
//檢查后臺(tái)返回的數(shù)據(jù)
var dataArray = eval(strJson);
e.href = dataArray[0].Questionnaire;//要訪問的網(wǎng)址
},
//返回?cái)?shù)據(jù)失敗,彈出錯(cuò)誤顯示
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
});
}
</script>
現(xiàn)象是 e.href如果放在函數(shù)的$.ajax之上可以運(yùn)行,但是放到ajax里面綁定動(dòng)態(tài)返回的地址,就不能運(yùn)行了。經(jīng)過(guò)了郁悶,最終找到了答案:因?yàn)閍jax默認(rèn)調(diào)用是異步的,所以不等ajax調(diào)用處理回調(diào)函數(shù)為href賦值,就直接發(fā)起了href,在這里這時(shí)候href是空值。
解決方法:將ajax調(diào)用方法改為同步,聲明ajax調(diào)用方式為同步:
復(fù)制代碼 代碼如下:
$.ajax({
async:false, //設(shè)置ajax的同步
}
這樣href的執(zhí)行就必須等待function中ajax調(diào)用完成后才會(huì)觸發(fā),就得到了想要的結(jié)果。
相關(guān)文章
asp.net+ajax簡(jiǎn)單分頁(yè)實(shí)例分析
這篇文章主要介紹了asp.net+ajax簡(jiǎn)單分頁(yè)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了ajax分頁(yè)的具體實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12本人ajax留言板的源程序 不錯(cuò)的應(yīng)用js
本人ajax留言板的源程序 不錯(cuò)的應(yīng)用js...2007-09-09用AJAX實(shí)現(xiàn)頁(yè)面登陸以及注冊(cè)用戶名驗(yàn)證的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇用AJAX實(shí)現(xiàn)頁(yè)面登陸以及注冊(cè)用戶名驗(yàn)證的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10ajax實(shí)現(xiàn)文件異步上傳并回顯文件相關(guān)信息功能示例
這篇文章主要介紹了ajax實(shí)現(xiàn)文件異步上傳并回顯文件相關(guān)信息功能,結(jié)合實(shí)例形式分析了基于jQuery $.ajax方法的文件異步上傳以及后臺(tái)java程序?qū)ξ募畔⒌淖x取與顯示相關(guān)操作技巧,需要的朋友可以參考下2018-06-06ajax請(qǐng)求post和get的區(qū)別以及get post的選擇
這篇文章主要介紹了ajax請(qǐng)求post和get的區(qū)別以及get post的選擇,需要的朋友可以參考下2014-06-06基于h5的history改善ajax列表請(qǐng)求體驗(yàn)
這篇文章主要介紹了基于h5的history改善ajax列表請(qǐng)求體驗(yàn)的相關(guān)資料,需要的朋友可以參考下2015-11-11Ajax學(xué)習(xí)全套(最全最經(jīng)典)
ajax是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開發(fā)技術(shù)。這篇文章主要介紹了Ajax學(xué)習(xí)全套(最全最經(jīng)典)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08