带有插入查询ASP.NET的Ajax呼叫控制器

时间:2018-10-29 00:13:13

标签: ajax asp.net-mvc

我从编辑器测试了更新查询,它运行良好,但是如果我要将其实施到我的ajax并从控制器中调用更新,则结果将失败,并且始终提醒我说“未找到”

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 :(得分:2)

您应该说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代码成功方法中执行类似的操作。

if(data.Status == "Ok") {
   alert(data.Message);
} else {
   alert("Something bad happened");    
}