2014-09-25 2 views
4
$.ajax({ 
    url: "/Configuration/AddServersAdvancedSelect", 
    type: "POST", 
    data: { selectedOUs: that.getByDataSelected() }, 
    async: false, 
    dataType: "html", 
    success: result => { 
     cont.setTabContentFromHtmlString(result, 1); 
     cont.tabClicked($("td[data-value='1']").get(0)); 
    }, 
    error: (xhr, ajaxOptions, thrownError) => { 
     // 
    } 
}); 

EDIT: Я вернулся к работе сегодня, и он волшебным образом начал работать. Я думаю, это что-тоjQuery AJAX POST - данные не поступают

Это мой запрос ajax к серверу. По какой-то причине данные не выбираются. Функция getByDataSelected работает так же, как должна, и возвращает полезные значения. Метод Controller имеет имя selectedOU и все соответствует. Кто-нибудь знает, почему этот ajax POST не отправляет данные?

+0

какие данные вы посылаете? –

+0

that.getByDataSelected()? –

+2

dataType: "html"? Разве это не JSON или что-то еще? – HaukurHaf

ответ

1

JQuery определяет параметр данных как

Тип: PlainObject или строка или массив

данные для отправки на сервер . Он преобразуется в строку запроса, если не является уже строкой. Прилагается к URL-адресу для запросов GET. См. Параметр processData для , чтобы предотвратить эту автоматическую обработку.

Объект должен быть парами ключ/значение.

Если значение представляет собой массив, jQuery сериализует несколько значений одним и тем же ключом на основе значения традиционной настройки (описано ниже).

Я бы предпочел, чтобы ваше возвращаемое значение this.getByDataSelected() не соответствует ожидаемому параметру, если он не отправляется.

В этом случае ваша функция ошибки должна быть получение внутренней ошибки сервера [500]

+0

Я не думаю, что это так. that.getByDataSelected() возвращает массив строк. Я тестировал массив всеми возможными способами. Я сериализовал его и проверил, имеет ли он действительный JSON sytax, и он это делает. Самая большая проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю внутреннюю ошибку сервера, она показывает мне «/ Configuration/AddServersAdvancedSelect» без строки запроса, которая для меня довольно странная. –

+1

Глагол POST отправляет тело запроса, а не строку запроса, GET представляет данные как строка запроса. Если ваш метод на сервере не ожидает параметров, и вы пытаетесь прочитать строку запроса, возможно, это ваша проблема. Если это так, ваш метод на сервере даже не будет достигнут, потому что, технически, нет способа получить запрос, который вы отправляете из-за требований к параметрам. –

+0

Хорошее наблюдение, хотя Бретт, это моя текущая проблема, я думаю. Это сообщение было полезно. – blamb

Смежные вопросы