javascript - 如何将 AJAX/Jquery 对象发送到 Controller (差异)MVC4

标签 javascript ajax asp.net-mvc-4

我有一段时间陷入这种困惑,这是由于以下原因:

我正在尝试发送 jquery 对象

var myObject = {
                    Title: $('#Title').val(),
                    Title2: $('#Title2').val(),
                    Title3: $('#Title3').val(),
                };

通过ajax调用

                    $.ajax({
                    data: { myObjectName = myObject
                    },
                    datatype: "json",
                    url: "myUrl",
                    cache: false,
                    error: function (ts)
                    {//handle error},
                    success: function (result)
                    {//handle success}
                });

我在 Controller 中接收我的对象,如下所示:

public ActionResult MyAction(ObjectType myObjectName)

但是,当从 javascript 接收对象时,它不会识别它本身,而只是实例化一个新的 ObjectType。

我知道我可以将它作为字符串发送,如果我将对象放入表单中则将其序列化,等等...我想知道为什么这种方法有时似乎对我有用(我已经让它工作了与其他 ObjectType(s)),而在其他情况下则不然。它与对象的复杂程度有关系吗?发送不完整的对象? (后一个似乎不是,因为我发送了“不完整”对象,并且空字段只是用 null 实例化)

任何见解将不胜感激。谢谢!

最佳答案

将代码更改为;

$.ajax({
    data: myObject,
    datatype: "application/json",
    type: "POST",
    url: "myUrl",
    cache: false,
    error: function (ts)
    {//handle error},
    success: function (result)
    {//handle success}
});

请注意,该类型是 POST,这意味着您还需要将 [HttpPost] 添加到您的 ActioResult。

只要ObjectType是一个带有字段的类

public class ObjectType
{
    public string Title { get; set; }
    public string Title2 { get; set; }
    public string Title3 { get; set; }
}

您当前的代码正在尝试将您的模型绑定(bind)到类似于的内容

public class SomeObject
{
    ObjectType myObjectName { get; set; }
}

public class ObjectType{
    public string Title { get; set; }
    public string Title2 { get; set; }
    public string Title3 { get; set; }
}

关于javascript - 如何将 AJAX/Jquery 对象发送到 Controller (差异)MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412222/

相关文章:

javascript - jQuery 递归脚本仅适用于第一个元素

javascript - Google Maps API JavaScript 当前位置

javascript - 通过 jQuery 使用远程 CSV 文件?

javascript - 如何将ajax结果传递给谷歌地图

asp.net-mvc - CheckBoxFor 生成的奇怪输入名称

c# - 如何在 asp.net mvc 的 Controller 中为特定用户提供操作方法的访问权限

javascript - 如何用ajax将这些数据显示在数据表中?

javascript - draw2d.js : connected event

jquery - 可以在 ASP.Net 中使用 jQuery $.ajax 而不交换/返回数据吗?

c# - System.Web.Mvc 类型的 Unity ResolutionFailedException