【问题标题】:ASP.NET MVC - Calling an Action through jQueryASP.NET MVC - 通过 jQuery 调用操作
【发布时间】:2011-02-13 03:15:14
【问题描述】:

我有一个简单的问题。 要通过 jQuery 调用动作(使用 AJAX),我是否必须创建一个返回 json 类型的新动作,或者无论如何也要对 http 请求(发布)和 jQuery 使用相同的动作?

谢谢

【问题讨论】:

    标签: jquery asp.net-mvc action


    【解决方案1】:

    这取决于你想对返回的数据做什么。

    说,你的action返回Html,使用jQuery,你可以把从服务器返回的html:

    $.ajax('/url/', function(data){
        $('#elementID').html(data);
    })
    

    或者,您可以使用 jQuery .load() 方法:

    $('#elementID').load('/url');
    

    如果您的操作返回 redirect,并且您希望客户端页面重定向到 url,那么是的,您需要创建一个将返回 Json 的新操作:

    public JsonResult SomeAction()
    {
        return Json(new {redirect = true, url = "/Path/ToRedirect"});
    }
    

    并使用 jQuery:

    $.ajax('/url/', function(data){
        if(data.redirect) {
            window.location = data.url;
        };
    })
    

    【讨论】:

      【解决方案2】:

      您可以使用相同的操作:

      $.post(
          '/controller/action', 
          { field_a: "Value a", field_b: "Value b" }, 
          function(data) {
              $('#result').html(data);
          }
      );
      

      使用 ajax,您通常希望 partial viewsjson 作为返回值。 普通帖子完整的 html 页面。为什么要在 ajax 和常规 post 中使用相同的操作?

      【讨论】:

      • 谢谢。我现在使用 Request.IsIsAjaxRequest()) 来查看我是否返回 View 或其他值。
      • 因为我只需要返回一个字符串,我想先从javascript调用它。如果 javascript 被禁用,那么我使用表单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多