生成asp.net mvc框架后,已经包含了jquery脚本,相关环境设置可参看我的另一篇文章:asp.net mvc实例。这里,我们仍然借助实例中的环境。在生成的框架中的scripts文件夹中已经可以看到jquery的脚本。
我们在testmodel.cs中创建一个函数,以取得json数据,仍然使用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数据,简单来说,即使用Key-Value数组形式的数据。然后按默认选项创建一个控制器,生成的控制器只有一个方法:Index()。我们再创建一个方法,以供jQuery调用。完成的代码如下:JQueryController.cs。注意:在MVC2.0中默认情况中禁止jQuery调用服务器数据,所以必须在代码中增加访问权限: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代码,完成如下:
JQuery
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript"> <br>$(document).ready(function() { <br>$('#updater').hide(); <br>$('#dataHead').hide(); <br>$('#linkFind').click(function(event) { <br>event.preventDefault(); <br>$('#dataHead').show(); <br>$('#updater').show(); <br>$.getJSON('/JQuery/FindByName/', { name: $('#textSearch')[0].value }, function(data) { <br>$('#testList > div').remove(); <br>$.each(data, function(i, item) { <br>$('#testList').append('<div>' + item.id + ' ' + item.name + '</script>
});
});
$('#updater').hide();
});
});
使用jQuery实现Ajax实例
运行项目,在文本框中输入“t”,按“搜索”,在页面没有刷新的情况下显示出查询到的数据,如下图: 
另外,在Ajax开发中,还可以使用Ajax的基础函数$.ajax进行调试,当出现错误时,可以打印错误信息。例如,对上述的调用可以用下面代码调试:
<script language="javascript" type="text/javascript"> <br>$(document).ready(function() { <br>$('#linkFind').click(function(event) { <br>event.preventDefault(); <br>var handleData = function(data) { alert("success:" + data); } <br>var handleErr = function(e) { <br>alert(e.responseText); <br>} <br><br>$.ajax({ <br>type: "get", <br>url: "/Jquery/FindByName", <br>data: "name=t", <br>success: handleData, <br>error: handleErr <br>}); <br>}); <br>}); <br></script>










