0

これは私の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);where で終了しましたresult

そして、私successは取得していないので、私の発砲していませんalert

何かアイデアをください、私は何が間違っていますか?

ありがとうございました

4

5 に答える 5

0

My success wasnt firing because I wasn't returning with a success, I was using a random error code because I thought I can just give them numbers like that.

于 2013-06-18T20:15:58.817 に答える
0

まず、コントローラ メソッドでこれを使用する必要があります。

return Json(result, JsonRequestBehaviour.AllowGet);

基本的に、アクション メソッドが機密データを返さない場合は、get を許可しても安全です。

ただし、この攻撃から保護するために、これをデフォルトとして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);
}
于 2013-06-10T18:22:18.260 に答える
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");
            }
        }
    });
于 2013-06-10T19:15:43.653 に答える