Jquery/Ajax 양식 제출(enctpe="formart/form-data")왜 '콘텐츠'는유형:False' 원인 정의되지 않은 인덱스가 PHP에 있습니까?
enctpe="formart/form-data"와 함께 양식을 제출하려고 합니다.텍스트 입력에 대한 Ajax 제출을 확인하면 양식에 jpeg/png 업로드가 포함되기 때문에 이 설정이 있습니다.
html 형식의 액션을 사용하여 스크립트를 참조하면 php는 정상적으로 동작합니다.
경보 행에 productName이 표시되므로 양식 데이터가 다음 jquery에 의해 올바르게 검색된 것 같습니다.= Test+Name&productDescription=테스트+설명& Other Product Details =
jquery success 함수에 의해 HTML로 인쇄된 반환된 데이터는 다음과 같은 php 오류입니다.정의되지 않은 인덱스: productName
contentType: false를 삭제하면 문제가 해결됩니다.
구글에서 jquery/ajax multipart/form-data submission을 검색하면 적어도 상위 히트에는 'content Type:false'가 주로 포함됩니다.누가 이유를 설명해 주시겠어요?
http://digipiph.com/blog/submitting-multipartform-data-using-jquery-and-ajax http://hayageek.com/jquery-ajax-form-submit/ jQuery.ajax를 사용하여 멀티파트/폼데이터 전송
jquery API 문서에는 다음과 같은 내용이 기재되어 있습니다.유형(기본값: 'application/x-www-form-urlencoded; charset=UTF-8') 유형: 문자열 서버에 데이터를 전송할 때 이 컨텐츠 유형을 사용하십시오.
멀티파트/폼 데이터 전송에 대해 false로 설정해야 하는 이유는 무엇입니까?잘못된 설정은 언제 필요합니까?
쿼리:
$("#addProductForm").submit(function (event) {
event.preventDefault();
//grab all form data
var formData = $(this).serialize();
$.ajax({
url: 'addProduct.php',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
$("#productFormOutput").html(returndata);
alert(formData);
},
error: function () {
alert("error in ajax form submission");
}
});
return false;
});
contentType
할 수 있는 선택권false
에 사용됩니다.multipart/form-data
파일을 전달하는 폼입니다.
셋팅할 때contentType
할 수 있는 선택권false
content-type 헤더를 추가하지 않도록 jQuery를 강제 설정합니다.그렇지 않으면 경계 문자열이 없어집니다.또한 멀티파트/폼데이터를 통해 파일을 제출할 때는processData
플래그가 false로 설정되어 있지 않으면 jQuery는 FormData를 문자열로 변환하려고 시도하지만 실패합니다.
To try and fix your issue:
jQuery의 사용.serialize()
표준 URL 인코딩 표기로 텍스트 문자열을 생성하는 메서드입니다.
사용할 때 인코딩되지 않은 데이터를 전달해야 합니다.contentType: false
.
사용해보십시오.new FormData
대신.serialize():
var formData = new FormData($(this)[0]);
formData가 php 페이지로 전달되는 방법의 차이점을 직접 확인하시기 바랍니다.console.log()
.
var formData = new FormData($(this)[0]);
console.log(formData);
var formDataSerialized = $(this).serialize();
console.log(formDataSerialized);
폼 액션 속성을 다음과 같이 설정해 주시면 문제가 해결됩니다.
<form name="addProductForm" id="addProductForm" action="javascript:;" enctype="multipart/form-data" method="post" accept-charset="utf-8">
jQuery 코드:
$(document).ready(function () {
$("#addProductForm").submit(function (event) {
//disable the default form submission
event.preventDefault();
//grab all form data
var formData = $(this).serialize();
$.ajax({
url: 'addProduct.php',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function () {
alert('Form Submitted!');
},
error: function(){
alert("error in ajax form submission");
}
});
return false;
});
});
언급URL : https://stackoverflow.com/questions/20795449/jquery-ajax-form-submission-enctype-multipart-form-data-why-does-contentt
'source' 카테고리의 다른 글
플러그인 개발 중 Wordpress 오류 - "이 페이지에 액세스할 수 있는 충분한 권한이 없습니다." (0) | 2023.04.01 |
---|---|
Gravity Forms 사용자 지정 유효성 검사 필터 (0) | 2023.04.01 |
'react'에서 반응하는 import *와 'react'에서 반응하는 import react의 차이점은 무엇입니까? (0) | 2023.04.01 |
postgresql을 사용하여 wordpress를 설치하는 방법 (0) | 2023.04.01 |
Oracle 스토어드 프로시저를 실행하는 방법 (0) | 2023.04.01 |