Как не в состоянии ударить контроллер в моем приложении asp.net MVC с помощью этого кода - PullRequest
0 голосов
/ 06 апреля 2011
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
    GOTO = function () {
        alert("yes");
        $.ajax({
            cache: false,
            type: "POST",
            url: "/Home/Index/",
            data: datastring,
            dataType: "json",
            success: function (data) {
                alert("Ohh Yaa Success");
            }
        });
    }
</script>

   <input type="button" value="submit" onclick="JavaScript:GOTO()" />

</asp:Content>

Мой контроллер ActionResult выглядит примерно так JsonResult

  [HttpPost]
        public System.Web.Mvc.JsonResult Index(FormCollection collection)
        {
            //return Content("<xml>this is just test</xml>", "text/xml");
            //return Content("this is just test", "text/plain");

            if (Request.AcceptTypes.Contains("application/json"))
            {
                return Json(new { id = 1, value = "new" });
            }
            else if (Request.AcceptTypes.Contains("application/xml") ||
                     Request.AcceptTypes.Contains("text/xml"))
            {

            }
            if (Request.AcceptTypes.Contains("text/html"))
            {
                //return View();
            }

           return Json(new { foo = "bar", baz = "Blech" });
        }

Я не могу вернуть JsonResult здесь все время. Я получаю всплывающее сообщение о том, что вы решили открыть этот диалог? я что-то не так делаю?

спасибо

Ответы [ 4 ]

1 голос
/ 06 апреля 2011

Я бы попытался подойти к нему более примерно так ...

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
    $(document).ready(function () {
        $(form).submit(function() {
        alert("yes");
        $.post({
            cache: false,
            type: "POST",
            url: "/Home/Index/",
            data: datastring,
            dataType: "json",
            success: function (data) {
                alert("Ohh Yaa Success");
            }
        });
      });
    }
</script>

<form>
   // your form fields
   <input type="button" value="submit" />
</form>
</asp:Content>

И тогда ваш контроллер должен выглядеть примерно так.

Обратите внимание, как мы изменили параметр настрока, соответствующая вашему полю jQuery data.

[HttpPost]
public System.Web.Mvc.JsonResult Index(string datastring)
{
    // you can deserialize your Json here.

    //return Content("<xml>this is just test</xml>", "text/xml");
    //return Content("this is just test", "text/plain");

    if (Request.AcceptTypes.Contains("application/json"))
    {
        return Json(new { id = 1, value = "new" });
    }
    else if (Request.AcceptTypes.Contains("application/xml") ||
             Request.AcceptTypes.Contains("text/xml"))
    {

    }
    if (Request.AcceptTypes.Contains("text/html"))
    {
        //return View();
    }

   return Json(new { foo = "bar", baz = "Blech" });
}
1 голос
/ 06 апреля 2011

Похоже, ваша data: datastring может быть проблемой.Убедитесь, что имя вашего параметра данных совпадает с параметром вашего метода.

1 голос
/ 06 апреля 2011

Попробуйте вместо этого - и убедитесь, что jQuery загружен первым. Обратите внимание на изменения, чтобы применить обработчик через jQuery вместо встроенного, сериализовать данные, генерировать URL в коде динамически, а не жестко, и возвращать false из обработчика щелчков, чтобы предотвратить нормальную отправку формы.

<script type="text/javascript">
    $(function() {
        $('input[type=button]').click( function() {
          var data = $('form').serialize();  // or however you get your data
          $.ajax({
              cache: false,
              type: "POST",
              url: "<%= Html.Action( "index", "home" ) %>",
              data: data,
              dataType: "json",
              success: function (data) {
                  alert("Ohh Yaa Success");
              }
          });
          return false; // don't do the normal submit
        });
    });
</script>

<input type="button" value="submit" />
1 голос
/ 06 апреля 2011

вам нужно поместить кнопку в тег формы и вызвать функцию GOTO в событии onsubmit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...