programing

jQuery Ajax가 404 오류를 반환하지만 올바른 응답입니다.

batch 2023. 3. 2. 22:07
반응형

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.phpAjax 스크립트의 파일에 오류가 표시됩니다.또, 옛날에는, 이러한 스크립트가 동작해, 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.phpWordPress 설정 루틴 전체를 부트스트랩하게 됩니다.함수wp()이 콜이 호출됩니다.$wp->main()다양한 셋업 기능을 호출합니다.

그 중 하나는$wp->query_posts()를 호출합니다.$wp_the_query->query()그 결과, 콜이 발신됩니다.WP_Queryparse_query()기능.404 표시는 거기서 생성되고(AJAX 페이지는 WP 투고 등이 아님), 나중에 실제 404 응답 헤더로 변환됩니다.$wp->handle_404(), 다음에 호출된 함수query_posts()main().

100% 확신할 수는 없지만parse_query()범인이 확실합니다만, 제 생각엔 당신이 단지 이 사건들을wp-load.php그 대신에, 액세스 하고 싶은 오브젝트를 실제로 작성하는 것이 가능하기 때문입니다.

역시 Word Press를 실제로 사용하지 않기 때문에 확신할 수 없지만, 소스코드를 보면 이것이 가장 가능성이 높은 경우인 것 같습니다.

를 추가했습니다.ajax.phpWordPress 템플릿에 파일을 한 번 저장했다가 이 문제가 발생했습니다.

맨 위에 를 추가하여 간단히 해결했습니다.ajax.php

header('Response: HTTP/1.1 200 OK');

일종의 해킹이지만, 효과가 있었어.

아무도 답글을 올리지 않았기 때문에 주목할 필요가 있습니다. 하다, 하다, 하다, 하다를 돼요.wp-load.phpwp-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

반응형