使用jQuery輕松實現(xiàn)Ajax的實例代碼
更新時間:2010年08月16日 15:39:17 作者:
在Asp.Net的MVC架構中使用jQuery是一件很容易的事情,而使用jQuery實現(xiàn)Ajax更加簡單。
生成Asp.Net MVC框架后,已經(jīng)包含了jQuery腳本,相關環(huán)境設置可參看我的另一篇文章:Asp.Net MVC實例。這里,我們?nèi)匀唤柚鷮嵗械沫h(huán)境。在生成的框架中的Scripts文件夾中已經(jīng)可以看到jQuery的腳本。
我們在TestModel.cs中創(chuàng)建一個函數(shù),以取得Json數(shù)據(jù),仍然使用Tets表,包含兩個字段:Id和Name。
//JsonDataArray
public static Array GetJsonArray(String name)
{
Array data = null;
try
{
data = (from c in testDb.test
where c.name.Contains(name)
select new { c.id, c.name }).ToArray();
}catch(ArgumentNullException ae)
{}
return data;
}
Json數(shù)據(jù),簡單來說,即使用Key-Value數(shù)組形式的數(shù)據(jù)。然后按默認選項創(chuàng)建一個控制器,生成的控制器只有一個方法:Index()。我們再創(chuàng)建一個方法,以供jQuery調(diào)用。完成的代碼如下:JQueryController.cs。注意:在MVC2.0中默認情況中禁止jQuery調(diào)用服務器數(shù)據(jù),所以必須在代碼中增加訪問權限:JsonRequestBehavior.AllowGet。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcWeb.Models;
namespace MvcWeb.Controllers
{
public class JQueryController : Controller
{
//
// GET: /JQuery/
public ActionResult Index()
{
return View();
}
public JsonResult FindByName(string name)
{
return Json(TestModel.GetJsonArray(name), JsonRequestBehavior.AllowGet);
}
}
}
然后在Index()上按右鍵,按默認選項生成一個視圖,可在Views/JQuery看到生成的代碼:Index.aspx,生成的代碼非常簡單,我們再插入Script代碼,完成如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
JQuery
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#updater').hide();
$('#dataHead').hide();
$('#linkFind').click(function(event) {
event.preventDefault();
$('#dataHead').show();
$('#updater').show();
$.getJSON('/JQuery/FindByName/', { name: $('#textSearch')[0].value }, function(data) {
$('#testList > div').remove();
$.each(data, function(i, item) {
$('#testList').append('<div>' + item.id + ' ' + item.name + '</div>');
});
});
$('#updater').hide();
});
});
</script>
<h2>使用jQuery實現(xiàn)Ajax實例</h2>
<div id="query"><%= Html.TextBox("textSearch") %> <a href="#" id="linkFind">搜索</a>
<span class="update" id="updater"> Loading... </span></div>
<div id="dataHead" >ID Name</div>
<div id="testList"></div>
</asp:Content>
運行項目,在文本框中輸入“t”,按“搜索”,在頁面沒有刷新的情況下顯示出查詢到的數(shù)據(jù),如下圖:

另外,在Ajax開發(fā)中,還可以使用Ajax的基礎函數(shù)$.ajax進行調(diào)試,當出現(xiàn)錯誤時,可以打印錯誤信息。例如,對上述的調(diào)用可以用下面代碼調(diào)試:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#linkFind').click(function(event) {
event.preventDefault();
var handleData = function(data) { alert("success:" + data); }
var handleErr = function(e) {
alert(e.responseText);
}
$.ajax({
type: "get",
url: "/Jquery/FindByName",
data: "name=t",
success: handleData,
error: handleErr
});
});
});
</script>
我們在TestModel.cs中創(chuàng)建一個函數(shù),以取得Json數(shù)據(jù),仍然使用Tets表,包含兩個字段:Id和Name。
復制代碼 代碼如下:
//JsonDataArray
public static Array GetJsonArray(String name)
{
Array data = null;
try
{
data = (from c in testDb.test
where c.name.Contains(name)
select new { c.id, c.name }).ToArray();
}catch(ArgumentNullException ae)
{}
return data;
}
Json數(shù)據(jù),簡單來說,即使用Key-Value數(shù)組形式的數(shù)據(jù)。然后按默認選項創(chuàng)建一個控制器,生成的控制器只有一個方法:Index()。我們再創(chuàng)建一個方法,以供jQuery調(diào)用。完成的代碼如下:JQueryController.cs。注意:在MVC2.0中默認情況中禁止jQuery調(diào)用服務器數(shù)據(jù),所以必須在代碼中增加訪問權限:JsonRequestBehavior.AllowGet。
復制代碼 代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcWeb.Models;
namespace MvcWeb.Controllers
{
public class JQueryController : Controller
{
//
// GET: /JQuery/
public ActionResult Index()
{
return View();
}
public JsonResult FindByName(string name)
{
return Json(TestModel.GetJsonArray(name), JsonRequestBehavior.AllowGet);
}
}
}
然后在Index()上按右鍵,按默認選項生成一個視圖,可在Views/JQuery看到生成的代碼:Index.aspx,生成的代碼非常簡單,我們再插入Script代碼,完成如下:
復制代碼 代碼如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
JQuery
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#updater').hide();
$('#dataHead').hide();
$('#linkFind').click(function(event) {
event.preventDefault();
$('#dataHead').show();
$('#updater').show();
$.getJSON('/JQuery/FindByName/', { name: $('#textSearch')[0].value }, function(data) {
$('#testList > div').remove();
$.each(data, function(i, item) {
$('#testList').append('<div>' + item.id + ' ' + item.name + '</div>');
});
});
$('#updater').hide();
});
});
</script>
<h2>使用jQuery實現(xiàn)Ajax實例</h2>
<div id="query"><%= Html.TextBox("textSearch") %> <a href="#" id="linkFind">搜索</a>
<span class="update" id="updater"> Loading... </span></div>
<div id="dataHead" >ID Name</div>
<div id="testList"></div>
</asp:Content>
運行項目,在文本框中輸入“t”,按“搜索”,在頁面沒有刷新的情況下顯示出查詢到的數(shù)據(jù),如下圖:

另外,在Ajax開發(fā)中,還可以使用Ajax的基礎函數(shù)$.ajax進行調(diào)試,當出現(xiàn)錯誤時,可以打印錯誤信息。例如,對上述的調(diào)用可以用下面代碼調(diào)試:
復制代碼 代碼如下:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#linkFind').click(function(event) {
event.preventDefault();
var handleData = function(data) { alert("success:" + data); }
var handleErr = function(e) {
alert(e.responseText);
}
$.ajax({
type: "get",
url: "/Jquery/FindByName",
data: "name=t",
success: handleData,
error: handleErr
});
});
});
</script>
相關文章
基于cookie實現(xiàn)zTree樹刷新后展開狀態(tài)不變
這篇文章主要為大家詳細介紹了如何基于cookie實現(xiàn)zTree樹刷新后,展開狀態(tài)不變,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
jquery彈出框插件jquery.ui.dialog用法分析
這篇文章主要介紹了jquery彈出框插件jquery.ui.dialog用法,結合實例形式分析了彈出框插件jquery.ui.dialog的功能、下載、使用方法與相關注意事項,需要的朋友可以參考下2016-08-08
jQuery 網(wǎng)易相冊鼠標移動顯示隱藏效果實現(xiàn)代碼
顯示隱藏效果的實現(xiàn)主要是jquery層選擇器的應用:當鼠標移動經(jīng)過照片就顯示設為封面刪除,移開后就隱藏,此效果在web開發(fā)中經(jīng)常會用到,感興趣的朋友可以參考下哈2013-03-03
jquery dataTable 獲取某行數(shù)據(jù)
本篇文章主要介紹了jquery dataTable 獲取某行數(shù)據(jù)的相關知識,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05

