2016-08-12 3 views
1

$('#myForm').submit을 사용하여 양식을 제출하고 있습니다. 내 rest service가 application/x-www-form-urlencoded의 콘텐츠 유형을 허용하지만 submit()을 사용하면 브라우저 개발자 도구의 XHR 탭에서 요청을 볼 수없고 양식 매개 변수는 표시되지 않습니다. Rest 서비스에 도달하면 AJAX 게시물을 사용하고 content-type을 지정할 수 있지만 rest service는 옥텟 스트림을 생성합니다. 즉, 응답에 다운로드 할 수있는 파일 csv/pdf가 들어 있습니다. 그러면 양식을 올바르게 제출할 수있는 솔루션이 될 수 있습니까?JQuery 제출 양식 매개 변수가 비어 있습니다.

답변

1

$ .ajax()를 "post"유형으로 사용하지 않는 이유는 무엇입니까? 당신의 API 응답은 옥텟 스트림 또는 가상 양식을 작성하여 jQuery를 통해 게시해야 다음 다운로드 할 수있는 파일에있는 경우 AJAX를 통해 파일을 다운로드 할 수 없기 때문에 당신이 쉽게이

// 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) 
    } 
}); 

헤더를 설정할 수 있습니다 .. 때 파일은 현재 페이지의 다운로드 내용과 동일하게 유지됩니다. 매개 변수가이 다음에 의해 야기 될 수있는 API에서 비어있는 경우 일반적으로 수정 된 질문을 읽고 나면 당신의 poper 인수

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

예 아약스 게시 매개 변수는 나머지 서비스에 도달하지만 내 휴식 서비스는 옥텟 스트림을 반환하므로이 유형의 종류를 처리 할 수 ​​없기 때문에 아약스 오류가 throw됩니다. – Donatas

+0

API 또는 응답에서 응답을 게시 할 수 있습니까? 파일이 다운로드 되었습니까? –

+0

예, 파일이 다운로드되었으므로 CSV/pdf입니다. – Donatas

0

와 기능 아래

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); 
} 

전화.

  1. 양식은 제대로 직렬화하지입니다
  2. 지정 콘텐츠 형식은 양식이 어떤 작업을 지정하지 않도록 및 방법 다른 문제가있을 수 있습니다 아약스 사용하는 경우 귀하의 API는
  3. 접수되는 것이 아니다 .
  4. API가 예상하는 모델이 양식이 제출 한 것과 일치하지 않습니다.
  5. Ajax를 사용할 때 버튼 유형을 "제출"대신 "단추"로 변경하십시오.
관련 문제