Контроллер вызовов Ajax с запросом вставки ASP.NET - PullRequest
0 голосов
/ 29 октября 2018

Я проверил мой запрос на обновление от моего редактора, и он отлично работает, но если я собираюсь внедрить его в свой ajax и вызвать обновление с моего контроллера, результат будет неудачным, и он всегда предупреждает меня, говоря "Not Found"

enter image description here

Вот мой Ajax-вызов с моей точки зрения:

function SaveChanges() {
    var Op_dif = document.getElementById("Op_dif").value
    var op = document.getElementById("OP").value        

    //alert(OP + " , " + Op_desc)
    $.ajax({            
        url: '/HomeController/UpdateOP',
        type: 'POST',
        contentType: 'application/json',
        data: {
            'Op_dif': Op_dif,
            'op': op
        },            

        success: function (data) {
            alert('success');
        },
        error: function (jqXhr, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
}

Мой контроллер выглядит так:

public ActionResult UpdateOP(int Op_dif, string op)
{
    string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
    using (MySqlConnection con = new MySqlConnection(constr))
    {
        MySqlCommand cmd = new MySqlCommand("UPDATE MyTable SET Op_dif = @Op_dif WHERE op = @op ", con);
        //cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Op_dif", Op_dif);
        cmd.Parameters.AddWithValue("@op", op);                
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    return RedirectToAction("Index");
}

1 Ответ

0 голосов
/ 29 октября 2018

Вы должны сказать Home/UpdateOP вместо HomeController/UpdateOP, потому что это семантика маршрутизации. Всегда опускайте контроллер детали в конце.

Ajax-вызов должен быть таким:

function SaveChanges() {
    var Op_dif = document.getElementById("Op_dif").value
    var op = document.getElementById("OP").value        

    //alert(OP + " , " + Op_desc)
    $.ajax({            
        url: '/Home/UpdateOP',
        type: 'POST',
        data: {
            'Op_dif': Op_dif,
            'op': op
        },            

        success: function (data) {
            alert('success');
        },
        error: function (jqXhr, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
}

Проблема в том, что вы возвращаете RedirectToAction в конце метода, который не имеет смысла при вызове ajax. Попробуйте вместо этого вернуть JsonResult и обработайте его правильно. Вы можете вернуть что-то вроде этого:

return Json({Status = "Ok", Message = "Data updated successfully"}, JsonRequestBehavior.AllowGet);

и затем в методе js code success сделайте что-то вроде этого.

if(data.Status == "Ok") {
   alert(data.Message);
} else {
   alert("Something bad happened");    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...