이 기사의 예에서는 Ajax 데이터를 사용하여 게시물과 게시물을 제출하는 PHP의 일반적인 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.
많은 경우 Ajax를 사용하면 문제가 없지만 때로는 불완전한 Ajax 데이터 제출 게시물의 문제가 발생합니다. 다음은 모두가 분석할 수 있는 예입니다.
다음은 표준 Ajax 요청 코드입니다. 일반적인 상황에서는 문제가 없습니다. 그러나 사용자 이름=fdas&321 또는 매개변수 값에 앰퍼샌드가 N번 나타나는 경우와 같은 특정 상황에서는 문제가 발생할 수 있습니다. 테스트 결과 데이터가 전송됐으나 인쇄된 데이터가 반쯤 잘린 것으로 확인됐다. 최종적으로 헤더 정보를 주의 깊게 관찰한 결과 전송된 헤더가 잘못된 부분이 있는 것으로 확인됐다. 문자열 접합 방법으로 인해 이 문제가 발생한다는 사실을 발견했습니다. username =fdas&321&password=password 이것은 잘못된 것입니다. 따라서 문제를 방지하려면 전송된 데이터를 {username:username,passsword:password}의 json 형식으로 변경해야 합니다!
샘플 코드는 다음과 같습니다.
① 애플리케이션/x-www-form-urlencoded
POST를 통해 데이터를 제출하는 가장 일반적인 방법입니다. 브라우저의 기본 양식의 경우 enctype 속성이 설정되지 않으면 결국 데이터는 application/x-www-form-urlencoded 모드로 제출됩니다. 요청은 다음과 유사합니다(이 문서에서는 관련 없는 요청 헤더가 생략됨).
Ajax를 사용하여 데이터를 제출할 때도 이 방법을 사용하는 경우가 많습니다. 예를 들어 JQuery 및 QWrap의 Ajax에서 Content-Type의 기본값은 "application/x-www-form-urlencoded;charset=utf-8"입니다.
② 다중 부분/양식 데이터
POST 데이터를 제출하는 또 다른 일반적인 방법입니다. 파일을 업로드하기 위해 양식을 사용할 때 양식의 암호화된 형식은 이 값과 동일해야 합니다. 요청 예시를 직접 살펴보겠습니다.
이 예는 좀 더 복잡합니다. 먼저, 텍스트 내용과의 중복을 피하기 위해 경계를 생성하여 서로 다른 필드를 구분합니다. 그런 다음 Content-Type은 데이터가 mutipart/form-data로 인코딩되고 이 요청의 경계 내용이 무엇인지 지정합니다. 메시지 본문은 필드 수에 따라 유사한 구조를 가진 여러 부분으로 나뉩니다. 각 부분은 --boundary로 시작하고 내용 설명 정보, 캐리지 리턴, 마지막으로 필드의 특정 내용(텍스트 또는 바이너리)이 옵니다. . 파일을 전송하는 경우 파일 이름과 파일 형식 정보도 포함되어야 합니다. 메시지 본문은 --boundary-- 플래그로 끝납니다. mutipart/form-data에 대한 자세한 정의를 보려면 rfc1867을 참조하세요.
이 방법은 일반적으로 파일을 업로드하는 데 사용되며 주요 서버 언어에서도 이를 잘 지원합니다.
위에서 언급한 두 가지 POST 데이터 메서드는 브라우저에서 기본적으로 지원되며, 이 단계에서 기본 형식은 이 두 가지 메서드만 지원합니다. 그러나 점점 더 많은 웹 사이트, 특히 WebApp이 모두 데이터 상호 작용을 위해 Ajax를 사용함에 따라 새로운 데이터 제출 방법을 완전히 정의하여 개발 편의성을 높일 수 있습니다.
③ 애플리케이션/json
application/json의 Content-Type은 응답 헤더로서 모든 사람에게 확실히 친숙합니다. 실제로 점점 더 많은 사람들이 메시지 본문이 직렬화된 JSON 문자열임을 서버에 알리기 위해 요청 헤더로 사용하고 있습니다. JSON 사양의 인기로 인해 IE 하위 버전을 제외한 모든 주요 브라우저는 기본적으로 JSON.stringify를 지원합니다. 서버 측 언어에도 JSON을 처리하는 기능이 있으므로 JSON을 사용할 때 문제가 발생하지 않습니다.
JSON 형식이 단순한 키-값 쌍보다 훨씬 더 복잡한 구조화된 데이터를 지원한다는 점도 유용합니다. 몇 년 전 프로젝트를 진행했을 때 제출해야 할 데이터가 매우 심층적이어서 데이터를 JSON으로 직렬화하여 제출했던 기억이 납니다. 하지만 당시에는 JSON 문자열을 val로 사용하고 여전히 키-값 쌍에 배치하고 x-www-form-urlencoded 모드로 제출했습니다.
Google AngularJS의 Ajax 함수는 기본적으로 JSON 문자열을 제출합니다. 예를 들어 다음 코드는 다음과 같습니다.
물론 x-www-form-urlencoded를 사용하여 데이터를 제출하도록 AngularJS를 구성할 수도 있습니다.
4텍스트/xml
XML-RPC(XML Remote Procedure Call)는 앞서 언급한 바 있습니다. HTTP를 전송 프로토콜로, XML을 인코딩 방법으로 사용하는 원격 호출 사양입니다. 일반적인 XML-RPC 요청은 다음과 같습니다.
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.