1. 程式人生 > >利用jquery load 局部刷新數據

利用jquery load 局部刷新數據

資料 rst quest 評論 加載數據 .ajax 現在 出現 源碼

本文屬於新手型的文章,也是新手寫的文章,高手可以濾過,如果各位看了有什麽意見,盡管提,小鳥虛心接受............. 都來拍磚吧。

在asp.net 的ajax中有updatepanel,但我不想用這個,就想到了jquery,看能否實現相同的功能,於是去搜索相關文章,但是也有人問,卻沒有給出完整的demo,但是jquery中有load方法可以實現

問題:在某篇文章的詳細頁,【 http://www.e6wa.com/Article/107.aspx 】提交評論的時候,不希望刷新整個頁面,但我想刷新評論部分,顯示我剛才發表的評論,這就想到局部刷新來加載數據,我想用jquery實現局部刷新,要怎樣才能達到這個效果呢?找了相關資料,可以用jquery.load來實現。
下面我就帶著問題來完成這篇文章,進入正題: 一、先來看看jquery.load()的語法:(下面是jquery.api中的原定義) load(url, params, callback) 裝入一個遠程HTML內容到一個DOM結點。 註意:避免用裝入的scripts腳本,裝入腳本改用$.getScript.當任何字符顯示時,IE會忽略所有的腳本。 返回值: jQuery

參數:

  • url (String): 裝入的HTML文件url地址
  • params (Object): (可選)發送到服務端的鍵/值對參數。
  • callback (Function): (可選) 當數據裝入完成時執行的函數.
二、相關的頁面:(兩個頁面在同一目錄下面) 1、 Article.aspx 文章詳細顯示頁 HTML頁面結構: <input id="TopicID" type="hidden" value="<%=topicID %>" /> <div id="ArticleContent"></div> <div id="LoadArticleReply"></div>
2、ArticleReply.aspx 評論加載頁(顯示頁) HTML頁面結構:一個repeater控件來顯示評論內容 在pageload中加載數據,通過 後面的post傳遞的topicID 三、相關代碼: 1、Article.aspx 頁面加載的時候 第一步: public int topicID;//定義變量;然後在page_Load加載時取到topicID的值,同時要綁定文章 topicID = int.Parse(Request.QueryString["ID"]);//需要經過處理,否則會出現很多問題,這裏我僅僅簡單的作為演示 第二步:加載文章評論方法:
<script type="text/javascript">
function LoadData() {
var tid = $("#TopicID").val();
$("#LoadArticleReply").load("/ArticleReply.aspx", { "ID": tid }, function() {
$("#LoadArticleReply").fadeIn("slow");
}
);
}
</script>
這個時候我們來看看這個LoadData函數,取當前文章的ID序號,然後根據DIV的id來load評論的地址,文章的ID序號,還有一個顯示的方式及速度, 通過load的url及ID,我們在ArticleReply.aspx 頁面就可以去到文章的ID序號,來獲取相關評論,然後呈現在ID為LoadArticleReply的DIV中了。
第三步:首次加載文章評論: 這個時候 Article.aspx初次加載的時候如果綁定文章評論呢??在cs中又如何調用js中的?? 當然還是Article.aspx.cs的page_Load中, if (!Page.IsPostBack) //首次加載文章評論,用腳本執行
{
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>LoadData();</script>");//題外問題: 這裏如果同時跟asp.net2.0中的login控件一起使用的時候會有個小問題,本文結束的時候介紹下
} 第四步:發表評論時,提交評論與加載評論 【提交評論請看本站 jquery ajax 介紹及在asp.net中的使用簡單示例 】 1、提交評論: function SubmitData() { var id = $("#TopicID").val();
var commName = $("#txtNickName").val();
var commEmail = $("#txtEmail").val();
var commUrl = $("#txtUrl").val();
var comment = $("#ArticleComment").val();
$.ajax({
cache: "False",
type: "POST",
url: "/PostComment.aspx",
data: "ID=" + id + "&name=" + commName + "&url=" + commUrl + "&email=" + commEmail + "&comment=" + comment,
success: function(msg) {
if (msg == "OK") {
alert("發表成功!");
//1、這是刷新頁面全部數據
// window.location.reload(true);
//2、這裏刷新局部數據 LoadData();
}
else if (msg == "Error") {
alert("添加失敗!");
}
}
});
} 這篇文章到這裏基本上結束了。 題外問題: 這裏如果同時跟asp.net2.0中的login控件一起使用的時候會有個小問題, 無法重定向到login.aspx 頁面去本文結束的時候介紹下
我試試了好久也不知道什麽原因,後來我想到是不是Article.aspx中調用script中方法出了問題,後面查明原因:
RegisterStartupScript有一個重載的方法,最後一個參數:指示是否添加腳本標記的布爾值,這樣加上就可以了。 ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>LoadData();</script>",true ); 其他:在緋雨的天空這篇文章中提到 http://feiyu.asgard.cn/article_156.html

在看jQuery源碼時發現的,拿出來和大家分享。在load的url裏加上空格後面就可以跟選擇器了。

舉例:我需要load test.html的內容,並只要取id為a的內容。

$("body").load("test.html #a");
會了吧^^ 用這種方法,本文就可以不需要用repeater控件去綁定數據,也許還有更好的辦法,大家如果想到,別忘了告訴我,呵呵。 希望本文對你有所幫助。謝謝

原文同時發表於:http://www.e6wa.com/Article/107.aspx

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://www.cnblogs.com/captainbed

利用jquery load 局部刷新數據