> 백엔드 개발 > PHP 문제 > PHP가 Ajax인지 확인하는 방법

PHP가 Ajax인지 확인하는 방법

王林
풀어 주다: 2023-02-24 15:50:01
원래의
3096명이 탐색했습니다.

PHP가 Ajax인지 확인하는 방법

오늘 M_Controller에서 다음 코드를 접하여 time() 함수에서 ajax 요청, 게시 요청, REQUEST_TIME의 차이를 판단하는 방법에 대해 조금 배웠습니다.

define('IS_AJAX', $this->input->is_ajax_request());
define('IS_POST', $_SERVER['REQUEST_METHOD'] == 'POST' && count($_POST) ? TRUE : FALSE);
define('SYS_TIME', $_SERVER['REQUEST_TIME'] ? $_SERVER['REQUEST_TIME'] : time());
로그인 후 복사

is_ajax_request() 메소드는 CI에서 Ajax 요청이 이루어졌는지 확인하는 메소드입니다. 공식 문서에서는 다음과 같이 설명합니다. 서버 헤더에 HTTP_X_REQUESTED_WITH , 존재하는 경우 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. is_ajax_request()方法是CI内判断是否ajax请求的一种方法,官方文档对于它的解释是:检查服务器头中是否含有HTTP_X_REQUESTED_WITH,如果有返回TRUE,否则返回FALSE。

当然,这样的判断是不够完善的,涉及到判断的原理如下:

当我们通过jquery发送ajax请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息默认内容为:XMLHttpRequest,这是CI框架对于ajax请求判断的依据。

但是,当我们用原生js时如何进行判断呢?

xmlHttpRequest.setRequestHeader("request_type","ajax");
로그인 후 복사

根据XMLHttpRequest对象,手动进行头部设置,如上设置完成后,我们可以再PHP逻辑代码中如下获取:

$_SERVER['HTTP_REQUEST_TYPE']
로그인 후 복사

很明显,我们在头部设置的request_type在后台获取时,加上HTTP_的前置字符串,即可获取到前台发送的Header信息,即通过调用$_SERVER['HTTP_REQUEST_TYPE']

물론 이런 판단은 충분히 완벽하지 않습니다. 판단에 관련된 원칙은 다음과 같습니다.

jquery를 통해 ajax 요청을 보낼 때, 이는 요청 헤더에 X-Requested-With라는 정보를 추가합니다. 정보의 기본 내용은 XMLHttpRequest입니다. 이는 CI 프레임워크가 Ajax 요청을 판단하는 기초입니다.

그런데 네이티브 js를 사용할 때는 어떻게 판단하나요? rrreee

XMLHttpRequest 객체에 따라 헤더를 수동으로 설정합니다. 위 설정이 완료된 후 다음과 같이 PHP 논리 코드에서 얻을 수 있습니다. #🎜🎜#rrreee#🎜🎜#분명히, 우리는 헤더에 있습니다. 백그라운드에서 request_type 세트와 HTTP_의 접두사 문자열을 획득하면 프론트 데스크에서 보낸 헤더 정보를 얻을 수 있습니다. 즉, 를 호출하여 얻을 수 있습니다. $_SERVER['HTTP_REQUEST_TYPE']프론트 데스크에서 전달한 값 가져오기: ajax 물론 request_type을 다른 필드로 설정할 수도 있습니다. #🎜🎜##🎜🎜#위 내용은 참고용입니다! #🎜🎜##🎜🎜#추천 튜토리얼: #🎜🎜#PHP 비디오 튜토리얼#🎜🎜##🎜🎜#

위 내용은 PHP가 Ajax인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿