这是我的控制器:
public JsonResult Success() { return Json(new { Success = true, Message = "Data Added Succefully" }); }
public JsonResult Error(string message) { return Json(new { Success = false, Message = message }); }
[HttpPost]
public JsonResult CreateAjax(TAUX taux)
{
if (ModelState.IsValid)
{
try
{
foreach (short i in taux.SelectItems)
{
taux.CAT_ID = i;
db.TAUX.Add(taux);
db.SaveChanges();
}
return Success();
}
catch (Exception err)
{
return Error(err.Message);
}
}
ViewBag.CAT_ID = new SelectList(db.CATEGORIE, "CAT_ID", "LIBELLE", taux.CAT_ID);
ViewBag.C_GARANT = new SelectList(db.GARANTIE, "C_GARANT", "LIB_ABREGE", taux.C_GARANT);
return Error("The server wasn't able to do something right now.");
}
这是我的PartialView CreateAjax
:
@model pfebs0.Models.TAUX
....
@using (Html.BeginForm("CreateAjax", "Taux", FormMethod.Post, new { id = "form" }))
{...}
这是我的观看Index
:
@model IEnumerable<pfebs0.Models.TAUX>
...
<script>
$.ajax({
url: "/",
method: "POST",
data: getMyData(),
success: function (json) {
if (json.Success) {
alert("Wow, everything was fine!");
} else {
alert(json.Message);
}
},
// This will be trigered whenever your ajax call fails (broken ISP link, etc).
error: function () {
alert("Something went wrong. Maybe the server is offline?");
}
});
</script>
...
@Html.ActionLink("Ajouter", "Create", "Taux",
new { id = "btnAdd", @class="btn btn-default"})
</p>
...
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function () {
$.ajaxSetup({ cache: false });
$('#btnAdd').click(function () {
$('.modal-dialog').load(this.href, function () {
$('#modalDiv').modal({
backdrop: 'static',
keyboard: true
}, 'show');
});
return false;
});
});
....
</script> }
我在这里尝试做的是在Insertionn之后显示成功警告但是在插入之后我被重定向到新的页面Localhost/Taux/ajaxCreate
它向我显示此消息{"Success":true,"Message":"Data Added Succefully"}
而不是显示PopUp成功Index
页面中的消息。这有什么不对?
答案 0 :(得分:1)
你应该使用
@using (Ajax.BeginForm(....))
{ }
使用适当的参数。
有关详细信息,请参阅How can I return a JSON result to a Ajax.BeginForm。
脚本也可能存在一些问题。 你想做什么:
<script>
$.ajax({
url: "/",
method: "POST",
data: getMyData(),
<强>更新强> 好的,这应该有效:
1)使用你原来的
@using (Html.BeginForm
2)将ajax调用放在函数中:
<script type="text/javascript">
function postData()
{
$.ajax({
url: '@Url.Action("CreateAjax", "Taux")',
method: "POST",
data: $('#form').serialize(),
....
}
3)在提交按钮中将type="submit"
更改为type="button"
并添加:
onclick="postData()"
属性。
4)更改ajax网址:
url: '@Url.Action("CreateAjax", "Taux")',
5)添加更改getMyData函数函数
data: $('#form').serialize(),