Как использовать $.ajax? когда я использую, он не попадает в действие моего контроллера

#javascript #jquery #asp.net #asp.net-mvc #asp.net-mvc-2

#javascript #jquery #asp.net #asp.net-mvc #asp.net-mvc-2

Вопрос:

Может ли какой-либо орган мне помочь.

У меня есть этот код

 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script type="text/javascript">


    function GOTO() {
        var datastring = "id=2";
        $.ajax({
            type: "POST",
            url: "/Home/Index",
            dataType: "json",
            data: datastring,
            success: function (json) { Complete(json.result); },
            error: function (request, status, error) {
                //alert("an error occurred: "   error);
                alert("Error saving data. Please contact support.");
            }
        });
    }

    function Complete(result) {
        if (result == "success") {
            alert("Success");  
        }
        else {
            alert("Failed");
        }
    }
</script>

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

</asp:Content>
  

и мой код контроллера такой

 [HttpPost]
public System.Web.Mvc.JsonResult Index(string datastring)
{
   return Json(new { foo = "bar", baz = "Blech" });
}
  

Но он вообще никогда не попадает в мой контроллер, это что-то, что я делаю неправильно, на мой взгляд?

Спасибо

Комментарии:

1. Вы получаете сообщение об ошибке в консоли JavaScript при нажатии кнопки?

2. если он не попадает на серверную часть, у вас ошибка на стороне клиента, такие инструменты, как Firebug, должны помочь вам быстро определить их

Ответ №1:

Попробуйте передать data вот так:

 $.ajax({
    type: "POST",
    url: "/Home/Index",
    dataType: "json",
    data: { datastring: 'foo bar' },
    success: function (json) { Complete(json.result); },
    error: function (request, status, error) {
        alert("Error saving data. Please contact support.");
    }
});
  

Комментарии:

1. Спасибо, Дарин, я пробовал это, но безуспешно, я получаю сообщение об ошибке $ .ajax не определен. Спасибо

2. @user300485, тот факт, что вы получаете $.ajax is undefined ошибку, — это то, что вы должны были упомянуть в своем вопросе, поскольку тогда ответ был бы простым. При этом, тем не менее, я бы рекомендовал вам передавать параметры, как я показал в своем ответе, поскольку это позаботится о правильном кодировании URL-адресов.

Ответ №2:

 function Complete(result) {
    if (result == "success") {
        altert("Success");
       // ^ beware!
  

У вас синтаксическая ошибка в вашем коде.

Более того, вам не нужно указывать JavaScript: протокол в onclick атрибуте, вы просто определяете метку в этом месте. Еще лучше, вообще не назначайте прослушиватели событий в атрибутах HTML, но используйте ненавязчивый JavaScript, включая запасной вариант для редкого случая, когда JavaScript недоступен.

Обновление: если вы получаете ошибку « $.ajax не определено», вы, вероятно, не включили jQuery на свою страницу. Добавить

 <script type="text/javascript" src="path/to/jquery-X.X.X.js"></script>
  

На вашу страницу выше script элемента, который использует $.ajax (или любую другую функцию jQuery).

Комментарии:

1. Спасибо, Марсель, даже я изменил это, но у меня это не работает .. спасибо

Ответ №3:

это может зависеть от того, какие данные вы передаете. Ваш метод ожидает параметр с именем datastring, но вы передаете ‘id= 2’.

Комментарии:

1. Я изменил это на int id Andy, но все еще не попадает в контроллер? Спасибо