这是我的ajax帖子:
$.ajax({
type: "POST",
url: "AddUpdateConfigs",
data: ({id: @Model.QueueMonitorConfigurationsID, pathType: $('#ddlConfigTypeName').val(), threshold:$('#ddlThreshold').val(), valueType:$('#ddlValueTypeName').val(), location: $('#txtbLocation').val(), limit: $('#txtbLimit').val(), config: $('#NewOrUpdate').val() }),
dataType: JSON,
statusCode: {
404: function() {
alert("Data is duplicated");
},
405:function(){
alert("Location Path is not correct");
},
406: function(){
alert("Location Path has to be UNC path");
},
407: function(error){
alert(error);
}
},
success: function()
{
alert ("Success");
}
});
它在初始化时效果很好,并且调用了AddUpdateConfigs
函数。
该功能以return Json(result);
完成,其中result
为真。
然后我的success
没有被解雇,因为我没有得到alert
请问任何想法,我做错了什么?
谢谢
答案 0 :(得分:0)
首先,在你的控制器方法上你应该使用它:
return Json(result, JsonRequestBehaviour.AllowGet);
基本上,如果你的动作方法没有返回敏感数据,那么允许获取它应该是安全的。
但是,MVC
会将DenyGet
作为默认设置,以保护您免受此攻击。在您决定通过HTTP GET
公开数据之前,它会让您考虑所公开数据的含义。
在您的AJAX中,将ContentType
更改为
contentType: 'application/json'
<强> JS:强>
var queueMonitor = { id: @Model.QueueMonitorConfigurationsID,
pathType: $('#ddlConfigTypeName').val(),
threshold:$('#ddlThreshold').val(),
valueType:$('#ddlValueTypeName').val(),
location: $('#txtbLocation').val(),
limit: $('#txtbLimit').val(),
config: $('#NewOrUpdate').val() };
$.ajax({
url: 'AddUpdateConfigs ',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ parameterName: queueMonitor }),
success: function() {
alert("Success");
}
});
<强>控制器:强>
[HttpPost]
public JsonResult AddUpdateConfigs(QueueMonitor parameterName) //Note parameter being same as that passed in AJAX Call.
{
//Logic
return Json(result, JsonRequestBehaviour.AllowGet);
}
答案 1 :(得分:0)
success: function()
这应该是
success: function(data)
答案 2 :(得分:0)
没关系,我用以下方法解决了它:
[HttpPost]
public ActionResult AddUpdateConfigs(int id, string pathType, string threshold, string valueType, string location, int limit, string config)
{return new HttpStatusCodeResult(410, "New Data inserted");}
和
$.ajax({
type: "POST",
url: "AddUpdateConfigs",
data: ({id: @Model.QueueMonitorConfigurationsID, pathType: $('#ddlConfigTypeName').val(), threshold:$('#ddlThreshold').val(), valueType:$('#ddlValueTypeName').val(), location: $('#txtbLocation').val(), limit: $('#txtbLimit').val(), config: $('#NewOrUpdate').val() }),
dataType: 'application/json',
statusCode: {
404: function(){
alert("Data is duplicated");
},
405:function(){
alert("Location Path is not correct");
},
406: function(){
alert("Location Path has to be UNC path");
},
407: function(error){
alert(error);
},
410:function(result){
alert("Item added correctly");
},
411:function(result){
alert("Item updated correctly");
}
}
});
答案 3 :(得分:0)
我的成功并没有被解雇,因为我没有成功返回,我使用随机错误代码,因为我认为我可以给他们这样的数字。
答案 4 :(得分:0)
对于我的情况,这是因为表格beaviour,在达到成功/错误事件之前关闭
preventDefault()
解决了它