JQuery AJAX не работает правильно? - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть частичное представление с помощью этого скрипта jquery:

$("#btnGetEmpInfo").click(function () {
          var selectedItem = $('#EmployeeId').val();
          var focusItem = $('#EmployeeId')
      alert("Starting");
          $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: "<%= Url.Action("getEmpInfo", "NewEmployee")%>?sData=" + selectedItem,
            data: "{}",
            success: function(data) {
                if (data.length > 0) {
                alert("Yeah!");
                } else {
                   alert("No data returned!");
                }
              }                   
            });
            alert("Back!");
      });  

Тогда в моем контроллере у меня есть:

 [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult getEmpInfo(string sData)
    {
        return new JsonResult { Data = "test" };
    }

Я могу установить точку останова в контроллере, и она срабатывает, ноединственные «Оповещения», которые я получаю, это «Начало» и «Назад».Почему данные не будут возвращены или, по крайней мере, нажата, если данные не возвращены?

Заранее благодарим за любую помощь.

Гео ...

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Возможно, вы захотите улучшить этот вызов ajax следующим образом:

$.ajax({
    type: 'GET',
    url: '<%= Url.Action("getEmpInfo", "NewEmployee")%>',
    data: { sData: selectedItem },
    success: function(data) {
        // Warning: your controller action doesn't return an array
        // so don't expect a .length property here. See below
        alert(data.Data);
    }                   
});

и ваш контроллер принимает GET-запросы:

[AcceptVerbs(HttpVerbs.Get)]
public JsonResult getEmpInfo(string sData)
{
    return Json(new { Data = "test" }, JsonRequestBehavior.AllowGet);
}

Хорошо, теперь, когда мы исправили ошибку, позвольте мне уточнить. В своем коде вы использовали тип контента application/json для форматирования строки запроса. К сожалению, в ASP.NET MVC 2 нет ничего из коробки, способного понять смысл запросов JSON (если вы не написали фабрику пользовательских значений json ). Затем с помощью конкатенации строк добавьте параметр sData к URL-адресу без URL-кода, кодирующего его, что означает, что ваш код сломается в тот самый момент, когда пользователь вводит какой-то специальный символ, такой как &, в текстовое поле EmployeeId.

0 голосов
/ 22 февраля 2011

Попробуйте добавить обратные вызовы beforeSend, error и complete, чтобы получить больше информации в отладчике JavaScript.http://api.jquery.com/jQuery.ajax/

Вы используете отладчик javascript?(firebug, ie9 dev-tools, chrome dev-tools - приличные 3, которые приходят на ум)

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