asp.net mvc ajax сводит меня с ума - PullRequest
2 голосов
/ 28 ноября 2011

как получается, когда я отправляю ajax-запрос вот так все работает

   $(".btnDeleteSong").click(function () {

    var songId = $(this).attr('name');

    $.ajax({
        type: 'POST',
        url: "/Home/DeleteSong/",
        data: { id: songId },
        success: ShowMsg("Song deleted successfully"),
        error:  ShowMsg("There was an error therefore song could not be deleted, please try again"),
        dataType: "json"
    });
});

Но когда я добавляю анонимную функцию к успеху, она всегда показывает мне сообщение об ошибке, хотя песня все еще удалена

 $(".btnDeleteSong").click(function () {

    var songId = $(this).attr('name');

    $.ajax({
        type: 'POST',
        url: "/Home/DeleteSong/",
        data: { id: songId },
        success: function () { ShowMsg("Song deleted successfully"); },
        error: function () {
            ShowMsg("There was an error therefore song could not be deleted, please try again");
        },
        dataType: "json"
    });
});

что, если бы я хотел получить несколько вещей для успешного вызова ajax, мне нужно иметь возможность использовать анонимную функцию, и я знаю, что так и должно быть, но что я делаю неправильно? Я хочу, чтобы в сообщении об успехе не было ошибки.

function ShowMsg(parameter) { 
      $("#msg").find("span").replaceWith(parameter); 
      $("#msg").css("display", "inline"); 
      $("#msg").fadeOut(2000); 
      return false; 
}

Ответы [ 2 ]

0 голосов
/ 28 ноября 2011

Ваш метод действия обязательно должен возвращать данные Json.У меня есть подобный код, посмотрите, поможет ли это.

 public ActionResult GetAllByFilter(Student student)
    {
        return Json(new { data = this.RenderPartialViewToString("PartialStudentList", _studentViewModel.GetBySearchFilter(student).ToList()) });
    }


 $("#btnSearch").live('click',function () {

        var student = {
            Name: $("#txtSearchByName").val(),
            CourseID: $("#txtSearchByCourseID").val()
        };
        $.ajax({
                    url: '/StudentRep/GetAllByFilter',
                    type: "POST",
                    data: JSON.stringify(student),
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function(result) {
                        $("#dialog-modal").dialog("close");
                        RefreshPartialView(result.data);
                    }
                , error: function() { alert('some error occured!!'); }
                });

    });

Выше код используется для перезагрузки частичного представления.в вашем случае это должно быть прямо вперед.

Спасибо, Правин

0 голосов
/ 28 ноября 2011

Убедитесь, что ваше действие возвращает данные Json.

"json": оценивает ответ как JSON и возвращает объект JavaScript. В jQuery 1.4 данные JSON анализируются строго; любой искаженный JSON отклоняется и выдается ошибка разбора. (См. Json.org для получения дополнительной информации о правильном форматировании JSON.)

http://api.jquery.com/jQuery.ajax/

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