php - 请教一个href,ajax,重定向之间的问题
高洛峰
高洛峰 2017-05-16 12:59:05
0
7
567

今天在开发中遇上一个问题
就是当前端直接href一个接口 (接口中有重定向的代码)
这样可以直接重定向

但当前端是用ajax请求这个接口的时候 将无法重定向

为什么? 请各位大大讲解下原理

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(7)
左手右手慢动作

ajax 자체는 리디렉션을 구현할 수 없습니다.
백엔드를 수정하여 결과를 반환하고 프런트엔드의 콜백 함수에서 판단한 후 페이지 점프를 실행할 수 있습니다.
기본 아이디어는 백엔드가 요청 헤더에 ajax 정보
예를 들어isAjax = request.getHeader("x-requested-with").equals("XMLHttpRequest");가 포함되어 있는지 확인한 다음 점프를 직접 실행하거나 점프 URL 정보를 반환하는 등 다양한 요청에 따라 다양한 작업을 수행하고 프런트 엔드가 점프한다는 것입니다.

左手右手慢动作

내 이해:
전자는 주소의 점프이고 후자는 새로 고침되지 않은 서버에 액세스하기 위한 인터페이스입니다. 페이지 이동 없이 인터페이스에만 액세스하는 경우 Ajax를 새로 고치지 않고 사용하는 경우 어떻게 리디렉션이 가능합니까?

클라이언트 측에서 다른 브라우저의 Ajax 요청은 3xx 상태 코드를 수신하지 않도록 하세요.

Peter_Zhu

Ajax는 비동기식 요청을 수행합니다. 상태 코드를 확인하고 해당 작업을 수행해야 합니다.

我想大声告诉你

일반적으로 백엔드를 기반으로 결과가 반환된 다음 js 점프

Peter_Zhu

ajax는 301 상태에서도 정상적으로 동작할 수 있지만,
동일 출처 정책이 충족되어야 한다는 전제가 있습니다!

이런 필요가 있는 경우 nginx 경로 프록시를 해당 URL로 허용할 수 있습니다

我想大声告诉你

ajax는 원래 페이지를 새로 고치지 않고 데이터에 대해서만 서버와 상호 작용합니다(데이터 상호 작용의 의미를 이해해야 함). 즉, 클라이언트는 서버 측 index/index/api에 의해 출력된 콘텐츠만 받습니다. 여기에 포함된 js 코드와 php 명령은 실행될 수 없습니다.
따라서 리디렉션을 원할 경우 올바른 처리 방법은 다음과 같습니다. 으아악

左手右手慢动作

async를 수정해서 사용해 보세요!

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!