jQuery Ajax가 404 오류를 반환하지만 올바른 응답입니다.
jQuery AJAX를 통해 PHP 스크립트에 데이터를 게시하고 있는데 모두 정상적으로 실행되지만 404 오류가 반환됩니다.내 Firebug 콘솔에서 PHP 스크립트의 응답은 정확합니다.스크립트가 어떻게 응답할 수 있는지 이해할 수 없으며, 여전히 404 오류를 발생시키고 있습니다.jQuery "error" 콜백 메서드는 트리거되지만 "Success" 메서드는 트리거되지 않습니다.
PHP 스크립트에 의해 실행되는 모든 문장은 정확하게 동작합니다.데이터베이스 갱신 등을 확인할 수 있기 때문입니다.
Dreamhost가 호스팅하는 WordPress 3.x 웹사이트에서 jQuery 1.4.2를 사용하고 있습니다.
---------------------------------------------------
좋아요, 워드프레스를 포함하면wp-blog-header.php
Ajax 스크립트의 파일에 오류가 표시됩니다.또, 옛날에는, 이러한 스크립트가 동작해, WP 3.0 의 갱신 후에 동작이 정지한 것을 90% 확신하고 있습니다.Firebug의 Response 헤더에 붙여넣을게요.
WP-blog-header를 포함하는 PHP로부터의 헤더 응답입니다.php 및 Firebug에서 404 오류를 반환합니다.
Date Tue, 10 Aug 2010 01:44:44 GMT
Server Apache
X-Powered-By PHP/5.2.6
X-Pingback http://www.learnwake.com/xmlrpc.php
Expires Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control no-cache, must-revalidate, max-age=0
Pragma no-cache
Last-Modified Tue, 10 Aug 2010 01:44:44 GMT
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 36
Keep-Alive timeout=2, max=98
Connection Keep-Alive
Content-Type text/html; charset=UTF-8
이 PHP로부터의 헤더 응답은 wp-blog-header를 포함하지 않습니다.php 및 Firebug에서 200 OK를 반환합니다.
Date Tue, 10 Aug 2010 01:44:58 GMT
Server Apache
X-Powered-By PHP/5.2.6
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 36
Keep-Alive timeout=2, max=100
Connection Keep-Alive
Content-Type text/html
를 포함할 때wp-blog-header.php
WordPress 설정 루틴 전체를 부트스트랩하게 됩니다.함수wp()
이 콜이 호출됩니다.$wp->main()
다양한 셋업 기능을 호출합니다.
그 중 하나는$wp->query_posts()
를 호출합니다.$wp_the_query->query()
그 결과, 콜이 발신됩니다.WP_Query
의parse_query()
기능.404 표시는 거기서 생성되고(AJAX 페이지는 WP 투고 등이 아님), 나중에 실제 404 응답 헤더로 변환됩니다.$wp->handle_404()
, 다음에 호출된 함수query_posts()
에main()
.
100% 확신할 수는 없지만parse_query()
범인이 확실합니다만, 제 생각엔 당신이 단지 이 사건들을wp-load.php
그 대신에, 액세스 하고 싶은 오브젝트를 실제로 작성하는 것이 가능하기 때문입니다.
역시 Word Press를 실제로 사용하지 않기 때문에 확신할 수 없지만, 소스코드를 보면 이것이 가장 가능성이 높은 경우인 것 같습니다.
를 추가했습니다.ajax.php
WordPress 템플릿에 파일을 한 번 저장했다가 이 문제가 발생했습니다.
맨 위에 를 추가하여 간단히 해결했습니다.ajax.php
header('Response: HTTP/1.1 200 OK');
일종의 해킹이지만, 효과가 있었어.
아무도 답글을 올리지 않았기 때문에 주목할 필요가 있습니다. 하다, 하다, 하다, 하다를 돼요.wp-load.php
wp-blog-header.php
.
★★★★★★★★★★★★★★★를 열면,wp-blog-header.php
을 사용하다
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
AJAX 작업에 대해 json만 출력하는 경우에는 다음을 포함할 필요가 없습니다.template-loader.php
이로 인해 불필요한 오버헤드가 발생하고 404 에러가 발생합니다.
WordPress는 'WordPress'를 사용합니다.3에는 3.0이 포함되어 있을 wp-load.php
기재한 바와 같이
전체적으로 Word Press가 404를 반환할 곳은 많지 않습니다.이러한 장소의 소스 트리를 그리핑하고 디버깅 코드를 입력하여 발생한 원인을 추적할 것을 권장합니다.
Tim의 답변을 바탕으로 플러그인에서 잡고 있던 훅을 "wp"에서 "init"로 변경했는데 404가 표시되지 않게 되었습니다.
저도 같은 문제가 있었어요.
픽스
변경:
require_once('wp-blog-header.php');
수신인:
require_once('conn.php');
require('wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
WP 외부에 페이지를 배치하는 경우에도 HTTP 헤더 오류가 수정됩니다.
언급URL : https://stackoverflow.com/questions/3445270/jquery-ajax-returning-404-error-but-correct-response
'programing' 카테고리의 다른 글
개체를 호출할 수 없습니다.angularjs 키 (0) | 2023.03.02 |
---|---|
애플리케이션 컨텍스트에서 일부 콩의 의존성이 사이클을 형성합니다. (0) | 2023.03.02 |
XML 없이 스프링이 있는 속성을 기반으로 런타임에 다른 서비스를 주입하는 방법 (0) | 2023.03.02 |
Jersey JSON POJO 지원 사용방법 (0) | 2023.03.02 |
Windows 서비스로 MongoDB를 실행하려면 어떻게 해야 하나요? (0) | 2023.03.02 |