当我使用ajax
时,我正在使用我的MVC应用程序中的parameter
调用,该调用无效(控制器未被调用)。
当我删除ajax
调用和controller
中的参数时,效果很好。
//代码:
$('#btnGw').click(function (e) {
$.post("../api/cuews/", { openId: "3" }, function (data) {
// data to manipulate for filter values
});
});
//控制器
[HttpPost]
public string Post(string openId)
{
string json = openId;
return json;
}
尝试添加Json.Stringify,
$.post("../api/cuews/", { openId: Json.Stringify("3") }, function (data) {
// data to manipulate for filter values
});
和
$.post("../api/cuews/", Json.Stringify({ openId: "3" }), function (data) {
// data to manipulate for filter values
});
但结果是一样的。
错误:(在控制台中)
POST http://localhost/api/cuews/ 404 (Not Found)
参数怎么办?
FYI,
相同的结构适用于带有参数的$.get
。
答案 0 :(得分:1)
试试这个,
例如:
public class TestModel
{
public int ID { get; set; }
public string Desc { get;set; }
}
$.ajax({
url: '../api/Test/',
type: 'POST',
dataType: 'json',
data: JSON.stringify({ Id: "1", Desc : "Name" }),
contentType: "application/json; charset=utf-8",
success: function (data) {
alert("Success!!!")
},
error: function (xhrequest, ErrorText, thrownError) {
alert("Error")
}
});
当这些状态下的参数时,AJAX运行良好。只是一个解决方法。
答案 1 :(得分:0)
您的问题是您使用$ _POST发送参数,而public string Post(string openId)
请求参数在$_GET
中传递。尝试将此参数分配移动到函数内部。
答案 2 :(得分:-1)
为什么不尝试:
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",//type of data to be send
url: youraddressgoeshere
dataType: "json",//type of data to be received
data: JSON.stringify(model),//data to be send
async: false,
success: function (response) {
//some code
},
error: function (xhr, status, error) {
alert(xhr.responseText);
}
});
您正在转换JSON.stringify值而不是整个对象。尝试转换整个对象并将其传递给服务器端方法。
此外,
如果您正在使用ASP.NET MVC,请转到App_Start文件夹中的RouteConfig,并检查您是如何定义网址的
FOR EX:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
);
注意{controller}/{action}/{id}
这里我有{id}参数。因此,如果我是你,我会尝试在服务器端控制器方法中将public string Post(string openId)
更改为public string Post(string id)
。