$ .ajax не возвращает данные - PullRequest
1 голос
/ 06 мая 2009

Я пытаюсь отправить данные обратно на сервер и получить набор данных обратно. Вместо этого я получаю HTML-код для всей страницы И , который не запускает действие в моем контроллере. И да - JQuery все еще смущает меня.

Код, который у меня сейчас есть:

function updateNavIndex(pageIndex) {
    var filters = $("form").serialize();
    var productGroup = $("#valProductGroup").attr('title');
    var productType = $("#valProductType").attr('title');
    var itemsPerPage = $("#ItemsPerPage").val();

    $.ajax({ path: "/CatalogAjaxController/UpdateNavigation"
          , type: "POST"
          , data: "{ productGroup: " + productGroup + ", productType: " + productType + ", itemsPerPage: " + itemsPerPage + ", pageIndex: " + pageIndex + ", filters: " + filters + "}"
          , success: function(data) { handleMenuData(data); }
    });
    $.ajax({ path: "/CatalogAjaxController/UpdateProducts"
          , type: "POST"
          , data: "{ productGroup: " + productGroup + ", productType: " + productType + ", itemsPerPage: " + itemsPerPage + ", pageIndex: " + pageIndex + ", filters: " + filters + "}"
          , success: function(data) { handleProductData(data); }
    });
}

Функция обратного вызова отключается, и определение функции выглядит следующим образом:

function handleMenuData(data) {
    $("#navigation ul").remove();
    }

В этот момент переменная data содержит HTML-код страницы. (И, как я уже сказал, действие не сработало.) Я думаю, что мне следует не вызывать функцию $ ajax напрямую, а использовать определение функции var. Что-то вроде:

var retrieveMenuData = function(path, productGroup, productType, itemsPerPage, pageIndex, filter, fnHandleCallback) {
    $.ajax( path
          , type
          , { productGroup: productGroup, productType: productType, itemsPerPage: itemsPerPage, pageIndex: pageIndex, filter: filter }
          , function(data) { fnHandleCallback(data); });
};

Я не уверен, правильно ли я его определил или как правильно его назвать. Любая помощь приветствуется!

Ответы [ 2 ]

3 голосов
/ 06 мая 2009

Решение может быть довольно простым.

Вы используете path: там, где должно быть url:

Источник: Список опций jQuery.ajax

2 голосов
/ 06 мая 2009

также у вас есть несколько странных кавычек .. синтаксис для data: больше похож на этот:

$.ajax({
    type: "POST",
    url: "bin/login.php",
    data:{data1: var1,data2: var2},
    success: function(data) {
        }
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...