Обновление: Я полностью удалил datatype = "html" и надеюсь, что возвращаемое значение будет всегда оцениваться - но сейчас ничего не происходит.Asp.net MVC 2 - Возвращенный объект Json не подхвачен в javascript?
Я также добавил код, который вызывает функцию «openModal». Он находится в LogOn UserControl, содержащемся в Site.Master. Надеюсь, что это очищает несколько вещей
Похоже, от контроллера не возвращают объект JSON обратно в АЯКСЕ вызывающего, что-то теряется где-то - я никогда не бил, что разрыв point..it пропускает его полностью
у меня есть простой модальных для входа в систему, так что я называю LogOn действий, как это:
<div id="logonForm">
<% using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions{UpdateTargetId = "logonForm"})) { %>
//my login form
<% } %>
</div>
И действие выглядит следующим образом:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//success login
if (Request.IsAjaxRequest())
return Json(new { Url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet);
else
return RedirectToAction("Index", "Home");
}
На этом этапе retursthe нового объекта JSON с URL-адресом в пользовательском элементе управления (в Site.Master), в JavaScript здесь:
<script type="text/javascript">
function openModel() {
$.ajax({
type: "get",
url: '/Account/LogOn',
contentType: "application/x-www-form-urlencoded;charset=utf-8",
// async: true,
success: function (result) {
debugger;
if (typeof result == 'string') {
$.modal(result, {
closeHTML: "",
containerId: "login-container",
overlayClose: true
});
}
else if (result.Url) {
debugger;
window.location.href = result.Url;
}
}
});
}
</script>
<% if (Request.IsAuthenticated) { %>
Welcome <b><%: Page.User.Identity.Name %></b>!
<%: Html.ActionLink("Log Out", "LogOff", "Account") %>
<% } else { %>
<a href="javascript:openModel()">Log In</a>
<% } %>
... но Javacript никогда не ловит it..i не может посмотрите, что находится в «результате», на экране отображается «{Url: /}» - просто странное поведение
Что мне не хватает? отладчик; Перерыв срабатывает, когда я первый нажмите на ссылку, но когда я пытаюсь отправить форму, он идет через Контролер LogOn - пытается вернуть объект JSON, но никогда не возвращается к JavaScript
Благодаря много
Где `openModel` дозвонились из? – andynormancx 2010-11-29 17:20:20
`dataType:" html ",` эта строка кажется неправильной ...это не должно быть `dataType:" json ",` – 2010-11-29 17:24:30
Это следующий вопрос. http://stackoverflow.com/questions/4293765/asp-net-mvc-login-modal-problems-redirect-goes-to-modal/4293904 – 2010-11-29 17:38:08