价值

2017-05-18 40 views
0

为什么我的MVC行动(ASP.NET 1.1的核心)始终显示值此代码:价值

$.ajax({ 
    url: "/home/SetValue", 
    type: "post", 
    dataType: "json", 
    contentType: 'application/json; charset=utf-8', 
    data: { "val": true } 
}); 

public class HomeController : Controller 
{ 
    [HttpPost] 
    public void SetValue(bool val) 
    { 
     bool check = val; 
    } 
} 

解决方案:

我必须做两件事才能使它起作用。

首先,我不得不删除dataType行,因为它指定了返回类型并且我的操作不返回任何内容。其次,contentType是错误的。我可以使用application/x-www-form-urlencoded; charset=UTF-8或只是删除该行。这是默认的contenteType,在这种情况下工作。

url的大小写是不相关的,并且不需要回调(例如,成功或错误)。所以,这个工程:

$.ajax({ 
     url: "/home/setvalue", 
     type: "post", 
     data: { "val": true } 
    }); 

我可以使用,而不是jQuery.ajax jQuery.post更加简化它。这是我在我的第一个ASP.NET Core应用程序中最后一个简单的概念证明:

// JavaScript 
$("#myCheckbox").on("click", function() 
{ 
    var isChecked = $(this).is(":checked"); 

    $.post({ 
     url: "/home/setvalue", 
     data: { "val": isChecked } 
    }); 
}); 

// .NET controller 
[HttpPost] 
public void SetValue(bool val) 
{ 
    bool check = val; 
} 

感谢您的所有输入。

+0

是不是你的$ .ajax调用缺少成功和错误处理程序? – Juan

+0

删除'contentType'选项(你没有对数据进行字符串化,并且没有理由这样做)。你为什么在调用'void'方法时指定'dataType:“json”'? –

回答

1

您需要删除datatype = Json。您也可以删除contentType。把成功和错误,有助于检查你的结果是什么。此代码适用于您的条件,并且SetValue方法中的布尔值为true。

$("button").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "/Home/SetValue/", 
      data: { "val": true }, 
      success: function (result) { 
       alert('ok'); 
      }, 
      error: function (result) { 
       alert('error'); 
      } 
     }); 
    }); 
3

从Ajax代码删除DataType,并添加[FromBody]到SetValue方法,像这样:

public class HomeController : Controller 
{ 
    [HttpPost] public void SetValue([FromBody]bool val) 
    { 
     bool check = val; 
    } 
} 
0

您需要更正控制器名称的外壳,所以应该是不是家里家。

此外,为了在ASP.NET Core中使用JSON进行绑定,您需要在控制器操作中使用[FromBody]属性。看看这个博客的更多信息:https://andrewlock.net/model-binding-json-posts-in-asp-net-core/

最后,添加成功回调,它应该工作。

希望这有助于:)

1

数据类型: 'JSON',

其平均收益率从服务器的数据的类型应该是JSON

的contentType:“应用/ JSON的; charset = utf-8',

它的平均数据类型应该是json之前发送给服务器在你的情况下,你需要将你的数据转换成json stringfy。