【发布时间】:2015-12-06 14:21:51
【问题描述】:
我对使用 ajax 传递值有疑问。我做过这样的事情:
$('#zlozZamowienie').click(function () {
var wycieczki = [];
$("input[name=Id_wycieczki]:checked").each(function () {
var id = $(this).attr('id');
wycieczki.push(id);
});
var productModel = {
Id_oferty: $("#Id_oferty").val(),
Nazwa_oferty: $("#Nazwa_oferty").val(),
Data_od: $("#Data_od").val(),
Data_do: $("#Data_do").val(),
Cena_za_miejsce: $("#Cena_za_miejsce").val(),
iloscDni: $("#iloscDni").val(),
SelectedKwaterunek: $("input:radio[name=SelectedKwaterunek]:checked").val(),
IdWycieczek: wycieczki
};
$.ajax({
type: "POST",
url: '@Url.Action("Szczegoly", "Oferta")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ 'skomponowanaOferta': productModel}),
dataType: "json",
success: function () {
alert('Success');
},
error: function (xhr) {
alert(xhr.error);
}
});
return false;
});
Szczegoly 控制器
[HttpPost]
public ActionResult Szczegoly(SzczegolyOfertyViewModel skomponowanaOferta)
{
if (ModelState.IsValid) {
...
};
TempData["Szczegoly"] = szczegoly;
return RedirectToAction("ZlozZamowienie", "Zamowienia");
}
Zamowienia 控制器
public ActionResult ZlozZamowienie()
{
var skomponowanaOferta = (SzczegolyOfertyViewModel) TempData["Szczegoly"];
SzczegolyOfertyViewModel podsumowanie = new SzczegolyOfertyViewModel();
if (SprawdzWycieczki(skomponowanaOferta.IdWycieczek))
{
...
};
return View(podsumowanie);
}
正确传递数据但由于此返回错误语句,我的按钮不会将我重定向到任何地方。当我将此返回更改为 true 或仅删除它时,此 ajax 传递空值。我做错了什么?
【问题讨论】:
-
click操作的目标是什么,如果它是一个链接,它可能首先重定向,然后如果确实发生了 ajax,则click处理程序正在运行。 -
点击动作的目标是HttpPost控制器,它通过RedirectToAction重定向到另一个控制器。我使用 TempData 在控制器之间传递这些数据。
-
我猜,如果您使用的是 AJAX,则无法从后端重定向页面
-
可能ajax调用成功返回后,可以
location.href="url" -
我复制了我的控制器以使事情更清晰。
标签: c# json asp.net-mvc asp.net-ajax