C# 如何将JSON结果返回到Ajax.begin
我有一个简单的表格:C# 如何将JSON结果返回到Ajax.begin,c#,.net,ajax,asp.net-mvc,asp.net-mvc-5,C#,.net,Ajax,Asp.net Mvc,Asp.net Mvc 5,我有一个简单的表格: @using (Ajax.BeginForm("CreateProductFromAjaxForm","Product" , null, new AjaxOptions() { HttpMethod = "post", OnSuccess = "getresult" }, null)) { @Html.EditorFor(m => m) &
@using (Ajax.BeginForm("CreateProductFromAjaxForm","Product" ,
null,
new AjaxOptions() { HttpMethod = "post", OnSuccess = "getresult" },
null))
{
@Html.EditorFor(m => m)
<hr />
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-info" value="Next" />
</div>
</div>
}
我已将以下内容添加到Web.Config:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
单击“提交”按钮后,生成的页面仅显示:
{"result":"success"}
我希望我可以在OnSuccess=“getresult”
处理程序中处理结果,但它似乎不起作用
基本上,我使用的是Ajax.BeginForm主要用于客户端验证
你能告诉我怎么了吗
更新:我在AjaxOptions中添加了HttpMethod=“post”
更新:getresult
,在Ajax.BeginForm
上面定义如下:
<script type="text/javascript">
var getresult = function (data) {
alert(data.result);
};
</script>
var getresult=函数(数据){
警报(数据、结果);
};
尝试指定HTTP方法:
new AjaxOptions() {
OnSuccess = "getresult",
HttpMethod = "post"
}
例如:
@using (Ajax.BeginForm("CreateProductFromAjaxForm", "Product" , null, new AjaxOptions() { OnSuccess = "getresult", HttpMethod = "post" }, null))
{
....
}
而不是:
var getresult = function (data) {
alert(data.result);
};
试一试
您需要包括
jquery.unobtrusiveajax.js
文件
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
JsonResult只是一种ActionResult派生类,它指示此操作将返回JSON,而不是视图或其他内容 例如:
@using (Ajax.BeginForm("CreateProductFromAjaxForm","Product" , null,
new AjaxOptions() { OnSuccess = "getresult" }, null))
这将生成一个元素,当提交到操作时,该元素将发送一个AJAX请求。为此,您需要在页面中包含以下脚本:
现在只需编写这个onSuccess javascript函数并处理服务器返回的JSON结果:
<script type="text/javascript">
var onSuccess = function(data) {
alert(data.result);
};
</script
var onSuccess=函数(数据){
警报(数据、结果);
};
我的项目也面临同样的问题。问题在于没有加载Ajax库。当我检查我的bundleconfig
和我的布局文件时,它确实包含了include,但我包含了ajax库的绝对名称,比如
bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
我的朋友让我改用通配符。惊人地
bundles.Add(新脚本包(“~/bundles/jqueryajax”)。包括(“~/Scripts/jquery.unobtrusiveajax*”)代码>已开始包含ajax库
现在,我的<代码>成功> /COD>函数按预期加载,而不是用JSON响应查看空白屏幕。 第页
new AjaxOptions() {
OnSuccess = "getresult",
}
在javascript中
function getresult(data){
alert(data.x);
}
在c中#
你能发布你的getresult
方法的定义吗?在javascript函数中放置一个虚拟警报,看看它是否被调用,比如:alert('hello')
@RuiJarimba:not luck withalert('hi')代码>其中之一。不幸的是;没有区别。再一次;没有成功。我甚至试图省略数据
参数:相同的结果。我的脚本目录中没有这个。我使用的是MVC5。我应该下载它吗?是的,使用NuGet软件包在2017年找到微软jQuery低调的Ajax.Life saver
bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
new AjaxOptions() {
OnSuccess = "getresult",
}
function getresult(data){
alert(data.x);
}
[HttpPost]
public ActionResult CreateProductFromAjaxForm(CreateProductModel model)
{
if (!ModelState.IsValid)
{
return Json("error", JsonRequestBehavior.AllowGet);
}
//add to database
return Json(model, JsonRequestBehavior.AllowGet);
}