C# MVC ajax向控制器发送操作方法
我一直在考虑这个问题:但不幸的是,它似乎对我没有帮助。除了我的方法签名外,我的方法签名几乎是一样的(但我已经尝试过了,它仍然没有被击中) jQuery 控制器C# MVC ajax向控制器发送操作方法,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我一直在考虑这个问题:但不幸的是,它似乎对我没有帮助。除了我的方法签名外,我的方法签名几乎是一样的(但我已经尝试过了,它仍然没有被击中) jQuery 控制器 然而,无论我尝试什么,我的控制器都不会被击中。通过调试,我知道它发送了一个请求,每次只会收到一个未找到错误。这是因为您发送了一个对象,而您需要两个参数 试试这个,你会看到: public class UserDetails { public string username { get; set; } public string
然而,无论我尝试什么,我的
控制器
都不会被击中。通过调试,我知道它发送了一个请求,每次只会收到一个未找到错误。这是因为您发送了一个对象,而您需要两个参数
试试这个,你会看到:
public class UserDetails
{
public string username { get; set; }
public string password { get; set; }
}
public JsonResult Login(UserDetails data)
{
string error = "";
//the rest of your code
}
您的操作需要字符串参数,但您正在发送复合对象
您需要创建一个与您发送的内容匹配的对象
public class Data
{
public string username { get;set; }
public string password { get;set; }
}
public JsonResult Login(Data data)
{
}
编辑
此外,toString()可能不是您想要的。只需发送对象本身
data: data,
试试这个:
/////// Controller post and get simple text value
[HttpPost]
public string Contact(string message)
{
return "<h1>Hi,</h1>we got your message, <br />" + message + " <br />Thanks a lot";
}
然后,在您的视图中:添加事件单击输入类型按钮,甚至单击来自提交的:
只需确保JSON数据格式正确即可
$("#jsonGetfullname").on("click", function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "@(Url.Action("JsonFullName", "Home"))",
data: "{ \"fname\" : \"Mahmoud\" , \"lastname\" : \"Sayed\" }",
dataType: "json",
success: function (data) {
var res = $.parseJSON(data);
$("#myform").html("<h3>Json data: <h3>" + res.fname + ", " + res.lastname)
},
error: function (xhr, err) {
alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
})
});
$(“#jsonGetfullname”)。在(“单击”,函数(){
$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“@(url.Action(“JsonFullName”,“Home”)”,
数据:“{\“fname\”:“Mahmoud\”,“lastname\”:“Sayed\”}”,
数据类型:“json”,
成功:功能(数据){
var res=$.parseJSON(数据);
$(“#myform”).html(“Json数据:“+res.fname+”,“+res.lastname”)
},
错误:函数(xhr,err){
警报(“readyState:+xhr.readyState+”\n状态:+xhr.status);
警报(“responseText:+xhr.responseText”);
}
})
});
我发现这种使用ajax的方法对我很有帮助,因为它没有复杂的json语法,使用起来更好
//fifth
function GetAjaxDataPromise(url, postData) {
debugger;
var promise = $.post(url, postData, function (promise, status) {
});
return promise;
};
$(function () {
$("#btnGet5").click(function () {
debugger;
var promises = GetAjaxDataPromise('@Url.Action("AjaxMethod", "Home")', { EmpId: $("#txtId").val(), EmpName: $("#txtName").val(), EmpSalary: $("#txtSalary").val() });
promises.done(function (response) {
debugger;
alert("Hello: " + response.EmpName + " Your Employee Id Is: " + response.EmpId + "And Your Salary Is: " + response.EmpSalary);
});
});
});
这个方法附带jquery承诺,最好的部分是在控制器上,我们可以通过使用单独的参数或仅通过使用模型类来接收数据
[HttpPost]
public JsonResult AjaxMethod(PersonModel personModel)
{
PersonModel person = new PersonModel
{
EmpId = personModel.EmpId,
EmpName = personModel.EmpName,
EmpSalary = personModel.EmpSalary
};
return Json(person);
}
或
这两种情况都适用。所以你必须这样尝试。我从他那里得到了推荐信
除了这一种您必须尝试的方法之外,这里还介绍了几种使用Ajax的方法。-您正在调用的是WebAPI吗?这个“应用程序”应该是“api”吗?这是控制器吗?如果是这样的话,这是完全不正确的e.preventDefault()
不会停止单击处理程序的执行。它防止发生默认操作,例如提交表单、导航到另一个页面等。
@section Scripts{
<script src="~/Scripts/modernizr-2.6.2.js"></script>
<script src="~/Scripts/jquery-1.8.2.intellisense.js"></script>
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
}
<script type="text/javascript">
/// post and get text value
$("#send").on("click", function () {
$.post('', { message: $('#msg').val() })
//// empty post('') means post to the default controller,
///we are not pacifying different action or controller
/// however we can define a url as following:
/// var url = "@(Url.Action("GetDataAction", "GetDataController"))"
.done(function (response) {
$("#myform").html(response);
})
.error(function () { alert('Error') })
.success(function () { alert('OK') })
return false;
});
// Post JSON data add using System.Net;
[HttpPost]
public JsonResult JsonFullName(string fname, string lastname)
{
var data = "{ \"fname\" : \"" + fname + " \" , \"lastname\" : \"" + lastname + "\" }";
//// you have to add the JsonRequestBehavior.AllowGet
//// otherwise it will throw an exception on run-time.
return Json(data, JsonRequestBehavior.AllowGet);
}
$("#jsonGetfullname").on("click", function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "@(Url.Action("JsonFullName", "Home"))",
data: "{ \"fname\" : \"Mahmoud\" , \"lastname\" : \"Sayed\" }",
dataType: "json",
success: function (data) {
var res = $.parseJSON(data);
$("#myform").html("<h3>Json data: <h3>" + res.fname + ", " + res.lastname)
},
error: function (xhr, err) {
alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
})
});
//fifth
function GetAjaxDataPromise(url, postData) {
debugger;
var promise = $.post(url, postData, function (promise, status) {
});
return promise;
};
$(function () {
$("#btnGet5").click(function () {
debugger;
var promises = GetAjaxDataPromise('@Url.Action("AjaxMethod", "Home")', { EmpId: $("#txtId").val(), EmpName: $("#txtName").val(), EmpSalary: $("#txtSalary").val() });
promises.done(function (response) {
debugger;
alert("Hello: " + response.EmpName + " Your Employee Id Is: " + response.EmpId + "And Your Salary Is: " + response.EmpSalary);
});
});
});
[HttpPost]
public JsonResult AjaxMethod(PersonModel personModel)
{
PersonModel person = new PersonModel
{
EmpId = personModel.EmpId,
EmpName = personModel.EmpName,
EmpSalary = personModel.EmpSalary
};
return Json(person);
}
[HttpPost]
public JsonResult AjaxMethod(string empId, string empName, string empSalary)
{
PersonModel person = new PersonModel
{
EmpId = empId,
EmpName = empName,
EmpSalary = empSalary
};
return Json(person);
}