Jquery 控制器上的Ajax Json数据为空
我正在控制器中捕获帖子,但是Jquery 控制器上的Ajax Json数据为空,jquery,ajax,json,asp.net-mvc-3,Jquery,Ajax,Json,Asp.net Mvc 3,我正在控制器中捕获帖子,但是字符串formData为空。因此,我也无法使用“防伪”属性,因为似乎所有数据都丢失了。也许我不应该使用serialzeArray 我的帖子: $("#SetCommunicationSettingsForm").submit(function (e) { debugger; var postData = $(this).serializeArray(); var formURL = $(t
字符串formData
为空。因此,我也无法使用“防伪”属性,因为似乎所有数据都丢失了。也许我不应该使用serialzeArray
我的帖子:
$("#SetCommunicationSettingsForm").submit(function (e) {
debugger;
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax(
{
url: formURL,
type: "POST",
datatype:"json",
data: postData,
success: function (data) {
debugger;
//data: return data from server
if (data.success == true) {
$("#SaveSuccessful").show();
$("#SetCommunicationSettingsFormArea").hide();
$("#SumbitCommunicationSettingForm").val('<%: ServiceSite.Resources.Resources.COMMON_CLOSE %>');
$("#SumbitCommunicationSettingForm").unbind('click');
$("#SumbitCommunicationSettingForm").click(closeCommunicationSettingPopup);
$("#CancelCommuncationSettingButton").hide();
}
else {
$("#DeviceCommuncationSettingLocation").html(data);
}
}
});
e.preventDefault(); //STOP default action
});
$(“#设置通信设置表单”).submit(函数(e){
调试器;
var postData=$(this.serializeArray();
var formURL=$(this.attr(“操作”);
$.ajax(
{
url:formURL,
类型:“POST”,
数据类型:“json”,
数据:postData,
成功:功能(数据){
调试器;
//数据:从服务器返回数据
if(data.success==true){
$(“#SaveSuccessful”).show();
$(“#设置通信设置格式区域”).hide();
$(“#SumbitCommunicationSettingForm”).val(“”);
$(“#SumbitCommunicationSettingForm”)。取消绑定('click');
$(“#Sumbit通信设置窗体”)。单击(关闭通信设置弹出窗口);
$(“#取消通讯设置按钮”).hide();
}
否则{
$(“#设备通信设置位置”).html(数据);
}
}
});
e、 preventDefault();//停止默认操作
});
我的控制器:
[HttpPost]
//[AuthorizeActionFilter]
//[ValidateAntiForgeryToken (Salt= "UpdateCommunicationSettings")]
public ActionResult UpdateCommunicationSettings(String formData)
{
//Decode parameters
JavaScriptSerializer ser = new JavaScriptSerializer();
Dictionary<String, Object> jsonParams = ser.Deserialize<Dictionary<String, Object>>(formData);
//verify permissions on server side
if (((List<string>)Session["AuthorizedActions"]).Contains("EditDeviceCommunicationSettings"))
{
// Build DeviceData.DeviceConfigurationSettings from model, pass to DAL to Save
List<long> deviceIds = GetSelectedDevicesFromSession();
foreach (long id in deviceIds)
{
}
return PartialView("DeviceCommunicationSettingDialog");
}
else
{
return Json(new { notAuthorized = true });
}
}
[HttpPost]
//[授权操作筛选器]
//[ValidateAntiForgeryToken(Salt=“UpdateCommunicationSettings”)]
公共操作结果更新通信设置(字符串格式数据)
{
//解码参数
JavaScriptSerializer ser=新的JavaScriptSerializer();
字典jsonParams=ser.Deserialize(formData);
//验证服务器端的权限
如果(((列表)会话[“AuthorizedActions”])包含(“EditDeviceCommunicationSettings”))
{
//从模型生成DeviceData.DeviceConfiguration设置,传递到DAL保存
List DeviceID=GetSelectedDevicesFromSession();
foreach(设备id中的长id)
{
}
返回PartialView(“DeviceCommunicationSettingDialog”);
}
其他的
{
返回Json(新的{notAuthorized=true});
}
}
您发布的是一个json对象,而不是字符串。因此您可以通过以下方式将json转换为字符串:
var jsonStr = JSON.stringify(json);
不要这样做,请尝试使用FormCollection:
public ActionResult UpdateCommunicationSettings(FormCollection formData)
{
}
您需要停止序列化
另外,您可以使用与客户端上的json模式相同的类,它将处理绑定