我們的網站一開始都是由前臺提交表單到action,每次一個小操作整個頁面都會刷新,影響用戶體驗,這次由我實現部分功能的局部刷新,但是初學ajax遇到不少問題
1、我們在struts.xml外擴展了一個xml來寫json類型傳值的action配置,我改完后直接新寫了一個:
<action name="addAccount2" class="random1.action.addAccount2"> <result name="showAccount" type="json"> <param name="root">list</param> </result> </action>
但是忘了刪掉原來的導致出錯:
<!-- <action name="addAccount2" class="random1.action.addAccount2"> <result name="nextaction" type="chain" > account </result> <result name="failure" type="freemaker"> /error.jsp </result> </action> -->
2、json傳送數據后全變為小寫
我在action里把取到的數據(list)轉換成JSON,success函數里循環讀取json的數據,但是在把新的內容append到相應的塊里的時候,list里的對象屬性首字母都是大寫的,append的時候我自然寫成大寫,然而發現取到的都是undefined。查閱資料后,發現別人都是改成小寫的,我改為小寫的之后就正確了。
3、局部刷新后,相應塊的js失效
本來有個下拉的js,局部刷新后居然失效了,
$(document).ready(function(){
$("ul.expmenu li > div.header").click(function()
{
var arrow = $(this).find("span.arrow");
alert("arrow");
if(arrow.hasClass("up"))
{
arrow.removeClass("up");
arrow.addClass("down");
}
else if(arrow.hasClass("down"))
{
arrow.removeClass("down");
arrow.addClass("up");
}
$(this).parent().find("ul.menu").slideToggle();
});
});解決無果后,只好把該效果放到了onclick事件里:
<script>
function showcontent(id){
//alert(id);
var str="list"+id;
/* $("div").children(".list").hide();
$("#"+str).show(3000); */
var arrow = $("#"+id).find("span.arrow");
if(arrow.hasClass("up"))
{
arrow.removeClass("up");
arrow.addClass("down");
$("#"+str).hide();
}
else if(arrow.hasClass("down"))
{
arrow.removeClass("down");
arrow.addClass("up");
$("#"+str).show(3000);
}
$("#"+id).find("ul.menu").slideToggle();
}
</script>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。