我正在尝试将数据传递给控制器以进行进一步处理,但我在控制器中得到null,但是js(ajax)的调试无论如何都显示了数字。可能是什么问题?
Ajax:
$('.toggler_btn').on('click', function (event)
{
var id = $(this).attr('data-id');
if ($(this).text() === '+') {
$.ajax({
url: "/List/GetSubItems",
type: "POST",
contentType: "html",
dataType: "text",
data: '{"id":"' + id + '"}', // here it show the data, like 5 or some other number
success: function (data)
{
$('.element_wrapper [data-id="' + id + '"]').html(data);
}
})
$(this).html('-');
}
else $(this).html('+');
});
控制器:
[HttpPost]
public ActionResult GetSubItems(string id) // here I get null
{
int pID = 0;
int.TryParse(id, out pID);
List<H_Table> list = new List<H_Table>();
foreach (var item in db_connection.H_Table.Where(i => i.PARENT_ID == pID))
{
list.Add(item);
}
return PartialView(list);
}
答案 0 :(得分:2)
/Users/Harit.Himanshu/bl/sources/webs/google-login/src/LoginButton.js
11:9 error 'gapi' is not defined no-undef
26:13 warning 'displayText' is assigned a value but never used no-unused-vars
✖ 2 problems (1 error, 1 warning)
使用此选项只需复制并粘贴
答案 1 :(得分:0)
将您的内容类型更改为“文字”并更改数据。
答案 2 :(得分:0)
您的AJAX请求已设置contentType: "html"
,但您实际上是在发送JSON(data: '{"id":"' + id + '"}'
)。您的控制器正在接收string
。
所以要么改变你的AJAX调用来发送原始字符串:
contentType: "text",
data: { id: id }
...或更新您的控制器以接收JSON。后者可以通过创建这样的东西来实现:
public ActionResult GetSubItems(ViewModel model)
public class ViewModel {
public string Id { get; set; }
}
编辑:另外,作为参考,您可能希望看到difference between contentType
and dataType
。
答案 3 :(得分:0)
将数据类型更改为&#34; application / json&#34;和数据:
data :{
id : id
}