MVC 使用Jquery實現AJax

來源:互聯網
上載者:User

在上一篇介紹MVC中的Ajax實現方法的時候,曾經提到了除了使用Ajax HTML Helper方式來實現之外,Jquery也是實現Ajax的另外一種方案。

通過get方法實現AJax請求

View

<script type="text/javascript">    function GetTime() {        $.get("Home/GetTime", function (response) {            $("#myPnl").html(response);        });        return false;    }</script><div id="myPnl" style="width: 300px; height: 30px; border: 1px dotted silver;"></div><a href="#" onclick="return GetTime();">Click Me</a>

Controller

public ActionResult GetTime(){    return Content(DateTime.Now.ToString());}
通過post方法實現Form的Ajax提交

View

@model MvcAjax.Models.UserModel@{    ViewBag.Title = "AjaxForm";}<script type="text/javascript">    $(document).ready(function () {        $("form[action$='SaveUser']").submit(function () {            $.post($(this).attr("action"), $(this).serialize(), function (response) {                $("#myPnl").html(response);            });            return false;        });    });    </script><div id="myPnl" style="width: 300px; height: 30px; border: 1px dotted silver;"></div>@using (Html.BeginForm("SaveUser", "Home")){    <table>        <tr>            <td>                @Html.LabelFor(m => m.UserName)            </td>            <td>                @Html.TextBoxFor(m => m.UserName)            </td>        </tr>        <tr>            <td>                @Html.LabelFor(m => m.Email)            </td>            <td>                @Html.TextBoxFor(m => m.Email)            </td>        </tr>        <tr>            <td>                @Html.LabelFor(m => m.Desc)            </td>            <td>                @Html.TextBoxFor(m => m.Desc)            </td>        </tr>        <tr>            <td colspan="2">                <input type="submit" value="Submit" />            </td>        </tr>    </table>} 

Model

using System.ComponentModel.DataAnnotations;namespace MvcAjax.Models{    public class UserModel    {        [Display(Name = "Username")]        public string UserName { get; set; }        [Display(Name = "Email")]        public string Email { get; set; }        [Display(Name = "Description")]        public string Desc { get; set; }    }}

Controller

[HttpPost]public ActionResult SaveUser(UserModel userModel){    //Save User Code Here    //......    return Content("Save Complete!");}   

以上代碼實現了Jquery POST提交資料的方法。

通過查看以上兩種Jquery方式的Ajax實現方法,和之前AJax HTML Helper比較可以發現其實Controller都是相同的。

採用Jquery方式提交資料的的主要實現方案就是通過Jquery的get或者post方法,發送請求到MVC的controller中,然後處理擷取的response,更新到頁面中。

注意點:

無論是使用超連結和form方式來提交請求,javascript的方法始終都有一個傳回值false,用來防止超連結的跳轉或者是form的實際提交。

這個地方就會出現一個疑問:

如果針對該頁面禁止了Javascript指令碼,那麼該頁面就是跳轉或者是form就是提交,返回的ActionResult處理就會出現問題了。

這個時候就需要在Controller中判斷該請求是否是Ajax請求,根據不同的情況返回不同的ActionResult:

[HttpPost]public ActionResult SaveUser(UserModel userModel){    //Save User Code Here    //......    if (Request.IsAjaxRequest())        return Content("Save Complete!");    else        return View();}   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.