Как использовать $ .ajax?когда я использую его не ударил мой контроллер действий - PullRequest
1 голос
/ 06 апреля 2011

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

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

<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" });
}

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

спасибо

Ответы [ 3 ]

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

Попробуйте передать 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.");
    }
});
2 голосов
/ 06 апреля 2011

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

2 голосов
/ 06 апреля 2011
function Complete(result) {
    if (result == "success") {
        altert("Success");
       // ^ beware!

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

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

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

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

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

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