價值

2017-05-18 19 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。