Ajax jquery发送空值到Mvc4控制器
Ajax jquery sending Null value to Mvc4 controller
我有一个与ajax调用请求相关的问题,在堆栈溢出上搜索它,尝试了我得到的所有相关帮助,但无法解决问题。问题是我使用这段代码从我的视图请求一个控制器。
<script type="text/javascript">
$(document).ready(function () {
$('#contactDiv ').click(function() {
var number = $(this).find('.ContactNumber').text();
var dataJson = {"contactNumber": number};
$.ajax({
type: "POST",
url: "../contactWeb/messages",
data: JSON.stringify(dataJson),
//data: dataJson,
//contentType: "application/json",
contentType: "application/json",
cache: false,
success: function (msg) {
//msg for success and error.....
alert(msg);
return true;
}
});
});
});
</script>
,接收调用的控制器为
[HttpPost]
public JsonResult messages(string dataJson)
{
Int64 userID = Convert.ToInt64(Session["userId"]);
try
{
List<MessagesModel> messagesModel = new List<MessagesModel>();
IMessages MessageObject = new MessagesBLO();
messagesModel = MessageObject.GetAllMessagesWeb(userID , dataJson);
//ViewData["Data"] = messagesModel;
}
catch (Exception e)
{
}
//return View();
string msg = "Error while Uploading....";
return Json(msg, JsonRequestBehavior.AllowGet);
}
但是它传递NULL值给控制器
有几个问题需要修复
需要什么
JsonRequestBehavior.AllowGet
当您的action
类型为post
时。
如果您使用asp.net mvc4
使用Url.Action
指定url即
url:"@Url.Action("ActionName","ControllerName")"
现在谈论你的问题。
你的参数名必须匹配,将dataJson
更改为contactNumber
。虽然可以使用,但没有必要使用JSON.stringify
,因为你传递的是单个字符串参数。
[HttpPost]
public JsonResult messages(string contactNumber)
{
Int64 userID = Convert.ToInt64(Session["userId"]);
嗨,你能改变你的参数的名称string dataJson
在你的行动为contactNumber
相对于你通过Ajax调用传递的对象
[HttpPost]
public JsonResult messages(string contactNumber) //here
{
Int64 userID = Convert.ToInt64(Session["userId"]);
try
{
List<MessagesModel> messagesModel = new List<MessagesModel>();
IMessages MessageObject = new MessagesBLO();
messagesModel = MessageObject.GetAllMessagesWeb(userID , contactNumber); //and here
//ViewData["Data"] = messagesModel;
}
catch (Exception e)
{
}
//return View();
string msg = "Error while Uploading....";
return Json(msg, JsonRequestBehavior.AllowGet);
}
如果你想在messages()中获取JSON,试试这个:
<script type="text/javascript">
$(document).ready(function () {
$('#contactDiv ').click(function() {
var number = $(this).find('.ContactNumber').text();
var data = {"contactNumber": number};
var dataJson = JSON.stringify(data);
$.ajax({
type: "POST",
url: "../contactWeb/messages",
dataType: 'text',
data: "dataJson=" + dataJson,
//data: dataJson,
//contentType: "application/json",
cache: false,
success: function (msg) {
//msg for success and error.....
alert(msg);
return true;
}
});
});
});
</script>
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- 如何将对象列表传递到MVC4中的控制器方法
- Mvc4将Jquery可排序列表项的顺序保持到控制器
- 将加密的剃须刀密码字段发送到 mvc4 控制器
- 将对象列表从控制器传递到 MVC4 中的视图
- 如何在 mvc4 控制器操作的 httpget 上将缓存设置为 false
- MVC4 JsTree 将选定的节点传递给控制器
- c# mvc4 Html.DropDownList用于调用控制器
- MVC4将所有表单数据(模型)从javascript传递到控制器 - 这是可能的
- 单击按钮时运行控制器方法MVC4 C#
- MVC4无法使用AJAX调用控制器方法
- 发布到MVC4中的控制器
- 如何在mvc4中从视图发送多个参数到API控制器
- 如何在mvc4和jquery中获取动态生成文本框的值并向控制器发出ajax请求
- 向MVC4控制器发布对象的javascript数组
- 将json对象传递给mvc4控制器-作为Nothing传递的数组
- Ajax jquery发送空值到Mvc4控制器
- 如何在MVC4中将值从控制器传递到Javascript