2016-08-12 2 views
1

Я представляю форму, используя $('#myForm').submit мой сервис для отдыха принимает контент-тип application/x-www-form-urlencoded, но при использовании submit() Я не вижу запрос на вкладке XHR в инструментах разработчика браузера, а параметры формы doesn 't добраться до службы Rest, я мог бы использовать пост AJAX и указать тип контента, но служба Rest создает поток октетов, другими словами, ответ содержит загружаемый файл csv/pdf, что может быть решением для отправки формы правильно?JQuery submit form параметры пустые

ответ

1

Почему вы не используете $ .ajax() с типом: «post»?. Вы можете установить заголовок легко там

// Request with custom header 
$.ajax({ 
    url: 'foo/bar', 
    type: 'post', 
    headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
    data: {}, // object of your data 
    success: function(response){ 
     alert(response) 
    } 
}); 

Если ваш ответ апите в потоке октетов или загружаемый файл, то вы должны создать виртуальную форму и отправить его через JQuery, потому что через AJAX, невозможно загрузить файл .. При файл загружает содержимое текущей страницы, останется той же формой события.

function autoGenerateAndSubmitForm(method, url, post_data) { 
    var element = document.getElementById("virtual_form"); 
    if(element != null) 
    { 
     element.parentNode.removeChild(element); 
    } 
    var form = document.createElement("form"); 
    form.setAttribute("id", "virtual_form"); 
    form.setAttribute("style", "display:none;"); 
    //form.setAttribute("target", "_blank"); // remove comment if you want to open it in new tab 
    form.method = method; 
    form.action = url; 
    for(i in post_data) 
    { 
     var element=document.createElement("input"); 
     element.value=post_data[i]; 
     element.name=i; 
     form.appendChild(element); 
    } 
    document.body.appendChild(form); 
    form.submit(); 
    form.parentNode.removeChild(form); 
} 

Вызова ниже функции с аргументами поперли

autoGenerateAndSubmitForm('POST','your_url',{your_post_data_object:"Here"}); 
+0

Да с сообщением ajax параметры достигают службы останова, но мой сервис обслуживания возвращает поток октетов, поэтому возникает ошибка ajax, потому что он не может обрабатывать этот тип типа – Donatas

+0

, можете ли вы опубликовать ответ от API или ответить он загружен файл? –

+0

Да, это скачанный файл, точнее это csv/pdf. – Donatas

0

После прочтения измененного вопроса, как правило, если параметры являются пустыми в API это может быть вызвано следующими причинами.

  1. форма не является надлежащим образом Serialized
  2. Тип содержимого указано не то, что ваш API принимает
  3. При использовании Ajax убедитесь, что форма не определяет каких-либо действий и методы еще там могут быть проблемы ,
  4. Модель, которую ожидает API, не соответствует тому, что отправила форма
  5. При использовании Ajax смените кнопку «кнопка» вместо «отправить».

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

  • Нет связанных вопросов^_^