首页 \ 问答 \ jQuery在Ajax中调用ASP.NET MVC C#中的Action方法(jQuery to call Action Method in ASP.NET MVC C# by Ajax)

jQuery在Ajax中调用ASP.NET MVC C#中的Action方法(jQuery to call Action Method in ASP.NET MVC C# by Ajax)

我试了好几个小时才得到这个工作,而且我真的希望你们中的一个知道(比这更多),而不是I。当客户端键入文本框时,我想调用MVC C#控制器称为updateOrder()的方法。 理想情况下,我想使用FormCollection访问表单元素(该表单称为“createOrder”)。

在控制器中,我有:

C#

[WebMethod]
public static void updateOrder(){
    string s = "asdf";
}

上面的字符串声明是突出的。 在视图中,我有一个方法,我基本上复制和粘贴,我发现在stackoverflow上:

JavaScript的

function updateOrderJS() {
    var $form = $('form[id="createOrder"]');
    $.ajax({type    : "POST",
        url     : $form.attr('action'),
        data    : $form.serialize(),
        error   : function(xhr, status, error) {},
        success : function(response) {
             updateOrder();
        }
    });
    return false;
}

事件很简单:

JavaScript的

updateOrderJS();

updateOrderJS()方法触发(使用警报检查),但断点不。


I have tried for hours to get this working, and I am really hoping one of you knows (a heck of a lot) more about this than I. When the client keys up in a textbox, I would like to call the MVC C# controller method called updateOrder(). Ideally, I would like to access form elements with a FormCollection (the form is called "createOrder").

In the controller, I have:

C#

[WebMethod]
public static void updateOrder(){
    string s = "asdf";
}

The string declaration above is breakpointed. In the view, I have a method I basically copy and pasted that I found on stackoverflow:

JavaScript

function updateOrderJS() {
    var $form = $('form[id="createOrder"]');
    $.ajax({type    : "POST",
        url     : $form.attr('action'),
        data    : $form.serialize(),
        error   : function(xhr, status, error) {},
        success : function(response) {
             updateOrder();
        }
    });
    return false;
}

The event is simply:

JavaScript

updateOrderJS();

The updateOrderJS() method fires (checked with an alert), but the breakpoint does not.


原文:https://stackoverflow.com/questions/30133132
更新时间:2019-06-23 01:10

最满意答案

在Asp.Net MVC中,你不需要用WebMethod来修饰你的方法。 您只需创建一个Action(这是一个方法)并从中返回结果。 样本:

public class CustomerController : Controller 
{
   public ActionResult Index() 
   {
       return View();
   }

   [HttpPost]
   public ActionResult UpdateOrder()
   {
      // some code
      return Json(new { success = true, message = "Order updated successfully" }, JsonRequestBehavior.AllowGet);
   }
}

在你的View ,你可以尝试一个这样的JavaScript(使用$ .ajax jquery方法 - 请参阅注释):

$.ajax({
    url: '@Url.Action("UpdateOrder")', // to get the right path to controller from TableRoutes of Asp.Net MVC
    dataType: "json", //to work with json format
    type: "POST", //to do a post request 
    contentType: 'application/json; charset=utf-8', //define a contentType of your request
    cache: false, //avoid caching results
    data: {}, // here you can pass arguments to your request if you need
    success: function (data) {
         // data is your result from controller
        if (data.success) { 
            alert(data.message);
        }
    },
    error: function (xhr) {
        alert('error');
    }
});

In Asp.Net MVC, you do not need to decorate your method with WebMethod. You just create an Action (which is a method) and return a result from it. For sample:

public class CustomerController : Controller 
{
   public ActionResult Index() 
   {
       return View();
   }

   [HttpPost]
   public ActionResult UpdateOrder()
   {
      // some code
      return Json(new { success = true, message = "Order updated successfully" }, JsonRequestBehavior.AllowGet);
   }
}

And in your View, you could try a javascript like this (using the $.ajax jquery method -- see the comments):

$.ajax({
    url: '@Url.Action("UpdateOrder")', // to get the right path to controller from TableRoutes of Asp.Net MVC
    dataType: "json", //to work with json format
    type: "POST", //to do a post request 
    contentType: 'application/json; charset=utf-8', //define a contentType of your request
    cache: false, //avoid caching results
    data: {}, // here you can pass arguments to your request if you need
    success: function (data) {
         // data is your result from controller
        if (data.success) { 
            alert(data.message);
        }
    },
    error: function (xhr) {
        alert('error');
    }
});
2016-09-10

相关问答

更多

如何在使用ASP.NET MVC的jQuery AJAX调用中触发“错误”回调?(How do you trigger the “error” callback in a jQuery AJAX call using ASP.NET MVC?)

注意:嘿,这是在ASP.Net MVC甚至达到1.0之前发布的,从那以后我甚至没有看过这个框架。 你应该停止upvoting这个。 做这样的事情: Response.StatusCode = (int)HttpStatusCode.BadRequest; actionResult = this.Content("Error message here"); 状态码应该根据错误的性质而改变; 一般来说,4xx用于用户生成的问题,5xx用于服务器端问题。 NOTE: Hey, this was pos ...

通过AJAX的ASP.net MVC AntiForgeryToken(ASP.net MVC AntiForgeryToken over AJAX)

我并不了解AJAX ActionLink,但可以从WebForms页面使用[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]属性发布到MVC操作。 您可以使用反射来获取用于设置用于MVC验证的cookie和匹配表单输入的MVC方法。 看到这个答案: 使用WebForm中的MVC HtmlHelper I don't know about the AJAX ActionLink specifically, but it is possibl ...

在asp.net mvc中对控制器进行简单的Ajax调用(Making a Simple Ajax call to controller in asp.net mvc)

更新完成后, 它首先使用默认的HttpGet请求调用FirstAjax操作,并呈现空白的Html视图。 (以前你没有这个) 稍后加载该视图的DOM元素,您的Ajax调用被触发并显示警报。 早些时候,您只是将JSON返回到浏览器而不呈现任何HTML。 现在,它有一个HTML视图呈现,它可以获取您的JSON数据。 您不能直接将JSON的纯数据呈现为HTML。 After the update you have done, its first calling the FirstAjax action w ...

如何在ASP.NET MVC中制作更新面板(How to make update panel in ASP.NET MVC)

您可以在ASP.NET MVC中使用部分视图来获取类似的行为。 部分视图仍然可以在服务器上构建HTML,您只需要将HTML插入适当的位置(实际上,如果您愿意包含MSFT Ajax库,则MVC Ajax帮助者可以为您设置此选项)。 在主视图中,您可以使用Ajax.Begin窗体来设置异步请求。 <% using (Ajax.BeginForm("Index", "Movie", new AjaxOptions { ...

在asp.net mvc中显示新记录时是否使用ajax(using ajax or not when displaying new records in asp.net mvc)

在asp.net mvc中显示新记录时是否使用ajax 使用jquery将是此方案的最佳方法。 因为您不必加载布局页面,这将不得不重新呈现脚本和内容。 Stick on to Ajax calls in MVC as much as possible ,技术正在改进,许多单页应用程序都在那里,如果我们仍然为每个新请求使用页面加载,那么没有意义。 传回部分视图和Json数据之间的比较 。 哪个更适合在应用程序设计中使用 ? 部分视图和Json数据都具有相同的权重,具体取决于方案。 When to u ...

处理(jQuery)Ajax调用中返回的ASP.NET MVC FileResult(Handling an ASP.NET MVC FileResult returned in an (jQuery) Ajax call)

问题:我不知道我应该如何处理这些数据以将其传送给用户。 出于这个原因,您不应该使用AJAX来下载文件。 您可以执行以下操作: 用户点击下载按钮 使用JavaScript,你会看到一些进度图像,告诉他他将不得不等待 使用JavaScript,您可以生成并向DOM中注入隐藏的iframe,其src属性指向应该生成文件的控制器操作 一旦加载iframe,您可以隐藏进度图像 Problem: I have no Idea what I'm supposed to do with this data to ...

ASP.NET MVC 1转发与ASP.NET MVC 2兼容吗?(Is ASP.NET MVC 1 forwards compatible with ASP.NET MVC 2?)

一直在发生突变 。 如果你想要一个1.0项目在2.0上运行,它确实在不同的地方寻找东西; 所以你必须将应用程序迁移到2.0。 。 以下是可能“中断”的变化(当前为预览版2): 预览2中的更改 Helpers现在返回一个MvcHtmlString对象 为了利用ASP.NET 4中新的HTML编码表达式语法,HTML助手的返回类型现在是MvcHtmlString而不是string 。 请注意,如果您将ASP.NET MVC 2和新的助手用于ASP.NET 3.5,那么您将无法利用HTML编码语法; 新 ...

从JavaScript调用ASP.NET MVC操作方法(Calling ASP.NET MVC Action Methods from JavaScript)

使用jQuery ajax: function AddToCart(id) { $.ajax({ url: 'urlToController', data: { id: id } }).done(function() { alert('Added'); }); } http://api.jquery.com/jQuery.ajax/ Use jQuery ajax: function AddToCart(id) { $.ajax({ ...

相关文章

更多

最新问答

更多
  • Android宽度:100%修复(网站接管问题)(Android width:100% fix (website takeover issue))
  • C ++函数/方法设计的良好实践(Good practice in C++ function/method design)
  • 计算其他表中不存在的所有记录 - SQL查询(Count all records that does not exist to other table - SQL Query)
  • 为什么我要用JPA共享ID?(Why do I get shared Ids with JPA?)
  • asp.net - 如何显示来自html格式的数据行的字段(asp.net - how to display a field from data row that is in html format)
  • 我们如何使用ActiveRecord从连接表中删除行?(How can we delete rows from a join table by using ActiveRecord?)
  • ng-class搞乱了类的顺序(ng-class messing with the order of classes)
  • oracle 12g无效数字错误(oracle 12g invalid number error)
  • 更改ng-src值onclick(Change ng-src value onclick)
  • 如何在android中自动添加自定义依赖项以创建新项目?(How to add custom dependencies automatically in android for ever a new project is created?)
  • datetime函数在PHP中(datetime function in php)
  • 在javascript中获取会话数组的值(in javascript get the value of a session array)
  • 如何在UTF8中编译LaTeX?(How can I compile LaTeX in UTF8? [closed])
  • Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)
  • Logcat错误:无法在android片段中加载视图(Logcat error: unable to load view in android fragments)
  • JavaFX的。(JavaFX. Adding items to the list in different threads is not working)
  • 从GDATA日历资源迁移到Google Calendar Resource api(Migrate from GDATA calendar resource to Google Calendar Resource api)
  • SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)
  • 我如何以编程方式添加一个listView列标题的点击事件(How can I add a listView column header a click event programmatically)
  • Wxpython:无法检索有关列表控件项XXX的信息(Wxpython: Couldn't retrieve information about list control item XXX)
  • 使用Tortoise SVN在SVN存储库中移动目录(Move Directory across SVN repository using Tortoise SVN)
  • 天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)
  • 我可以设置intelliJ来突出显示PHP编码风格吗?(Can I set intelliJ to highlight php coding style?)
  • 用javafx创建一个Truetype字体文件(Creating a Truetype Font file with javafx)
  • Spring ftp配置错误(Spring ftp configuration is wrong)
  • 使用gsub去除多个字符(Using gsub to strip multiple characters)
  • 续订推送证书并保持当前的App Store App正常工作(Renew Push certificate and keep current App Store App working)
  • js:ES5和ES6之间关于'this'关键字用法的一个令人困惑的观点(js: one confusing point about 'this' keyword usage between ES5 and ES6)
  • window.onload vs $(document).ready()(window.onload vs $(document).ready())
  • 在Swift中,如何声明一个符合一个或多个协议的特定类型的变量?(In Swift, how can I declare a variable of a specific type that conforms to one or more protocols?)