ajax動態(tài)為a標簽href賦值不執(zhí)行跳轉的原因分析及解決
更新時間:2013年06月16日 15:52:05 作者:
ajax 動態(tài)為a標簽的href屬性賦值,總是不執(zhí)行跳轉的原因想必大家有遇到過吧,下面與大家分享下具體的解決方法,希望對你有所幫助
由于一中考評系統(tǒng)要加入一個新的功能“調查問卷”,我想沿用別人做好的調查問卷,用別人的有一個好處就是:人家做的專業(yè),界面美化等非常人性化,但是它需要你每次設置完調查問卷后發(fā)布一下網址,客戶端訪問的每次都是變動的地址。
客戶端每次點擊“調查問卷”,就會跳轉到相應頁面:
點擊“調查問卷”即進入調查問卷頁面:
我使用a 標簽,每次訪問管理員提交的“調查問卷”
<li><a href="" onclick="meizz(this)">調查問卷</a></li>
點擊“調查問卷”,調用meizz函數(shù),該函數(shù)通過ajax調用返回要訪問的“調查問卷”網址:
<script type="text/javascript" language="javascript">
function meizz(e) {
$.ajax({
//async:false, //設置ajax的同步
type: "get", //get方式
url: "../handler/QueryQuestionnaire.ashx",
//返回數(shù)據(jù)成功,將返回的json數(shù)據(jù)解析,顯示在課程信息列表中
success: function (strJson) {
//檢查后臺返回的數(shù)據(jù)
var dataArray = eval(strJson);
e.href = dataArray[0].Questionnaire;//要訪問的網址
},
//返回數(shù)據(jù)失敗,彈出錯誤顯示
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
});
}
</script>
現(xiàn)象是 e.href如果放在函數(shù)的$.ajax之上可以運行,但是放到ajax里面綁定動態(tài)返回的地址,就不能運行了。經過了郁悶,最終找到了答案:因為ajax默認調用是異步的,所以不等ajax調用處理回調函數(shù)為href賦值,就直接發(fā)起了href,在這里這時候href是空值。
解決方法:將ajax調用方法改為同步,聲明ajax調用方式為同步:
$.ajax({
async:false, //設置ajax的同步
}
這樣href的執(zhí)行就必須等待function中ajax調用完成后才會觸發(fā),就得到了想要的結果。
客戶端每次點擊“調查問卷”,就會跳轉到相應頁面:
點擊“調查問卷”即進入調查問卷頁面:
我使用a 標簽,每次訪問管理員提交的“調查問卷”
復制代碼 代碼如下:
<li><a href="" onclick="meizz(this)">調查問卷</a></li>
點擊“調查問卷”,調用meizz函數(shù),該函數(shù)通過ajax調用返回要訪問的“調查問卷”網址:
復制代碼 代碼如下:
<script type="text/javascript" language="javascript">
function meizz(e) {
$.ajax({
//async:false, //設置ajax的同步
type: "get", //get方式
url: "../handler/QueryQuestionnaire.ashx",
//返回數(shù)據(jù)成功,將返回的json數(shù)據(jù)解析,顯示在課程信息列表中
success: function (strJson) {
//檢查后臺返回的數(shù)據(jù)
var dataArray = eval(strJson);
e.href = dataArray[0].Questionnaire;//要訪問的網址
},
//返回數(shù)據(jù)失敗,彈出錯誤顯示
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert(XmlHttpRequest.responseText);
}
});
}
</script>
現(xiàn)象是 e.href如果放在函數(shù)的$.ajax之上可以運行,但是放到ajax里面綁定動態(tài)返回的地址,就不能運行了。經過了郁悶,最終找到了答案:因為ajax默認調用是異步的,所以不等ajax調用處理回調函數(shù)為href賦值,就直接發(fā)起了href,在這里這時候href是空值。
解決方法:將ajax調用方法改為同步,聲明ajax調用方式為同步:
復制代碼 代碼如下:
$.ajax({
async:false, //設置ajax的同步
}
這樣href的執(zhí)行就必須等待function中ajax調用完成后才會觸發(fā),就得到了想要的結果。
相關文章
Ajax案例集下載:新增分頁查詢案例(包括《Ajax開發(fā)精要》中的兩個綜合案例) 下載
Ajax案例集下載:新增分頁查詢案例(包括《Ajax開發(fā)精要》中的兩個綜合案例) 下載...2007-05-05
ajax獲取json數(shù)據(jù)為undefined原因分析
Ajax 允許在不干擾 Web 應用程序的顯示和行為的情況下在后臺進行數(shù)據(jù)檢索。這篇文章主要介紹了ajax獲取json數(shù)據(jù)為undefined--原因,需要的朋友可以參考下2017-11-11

