jQuery Ajax de regresar de Error 404, pero la Respuesta correcta

Estoy publicando algunos datos a un script de PHP mediante AJAX de jQuery, y todo se ejecuta correctamente, pero devuelve un error 404. En mi consola de Firebug, la respuesta desde el script PHP es correcta. No entiendo cómo la secuencia de comandos puede responder, y todavía es tirar un error 404. El jQuery «error» método de devolución de llamada desencadenantes, y el «éxito» método no.

Todas las declaraciones realizadas por el script de PHP para trabajar con precisión, porque puedo ver la base de datos se actualiza, etc.

Estoy usando jQuery 1.4.2, en un WordPress 3.x sitio web alojado en Dreamhost.

———–MÁS INFO———–

OK, he descubierto que cuando me incluir WordPress es wp-blog-header.php en el archivo de script de Ajax, me sale el error. También, una vez que estas secuencias de comandos de trabajo, y estoy 90% seguro de que dejó de trabajar después de la WP 3.0 actualización. Voy a pegar en los encabezados de Respuesta de Firebug.

Este encabezado de respuesta de PHP que incluye la wp-blog-header.php y devuelve un error 404 en Firebug…

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

Este encabezado de respuesta de PHP que no incluye los wp-blog-header.php y devuelve un 200 OK en Firebug…

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
  • Pls comprobar el script de php si hay una línea que envía el encabezado 404
  • Se debe editar este nuevo descubrimiento en tu pregunta original.
  • Acabo de hacer. Gracias por el asesoramiento.
InformationsquelleAutor Mike McLin | 2010-08-10

6 Kommentare

  1. 47

    Cuando se incluyen wp-blog-header.php, al final de arranque de toda la instalación de WordPress rutina. La función wp() se llama, que llama a $wp->main(), que a su vez llama a varias funciones de configuración.

    Uno de estos es $wp->query_posts(), que llama a $wp_the_query->query(), que a su vez llama WP_Query‘s parse_query() función. Yo sospecha que el 404 indicación se genera allí (su página de AJAX no es un WP post, ni nada de eso), y más tarde se transformó en una verdadera respuesta 404 encabezado por $wp->handle_404(), la llamada de la función después de query_posts() en main().

    No estoy 100% seguro de que parse_query() es la definitiva culpable, pero sugiero ver si usted puede incluir wp-load.php lugar, ya que creo que hace el trabajo real de la creación de los objetos a los que desea acceder.

    De nuevo, yo realmente no uso WordPress, así que no puedo estar seguro, pero mirando el código fuente de este parece ser el caso más probable, por lo que puedo decir.

    • Tim. Te amo tanto que no tengo ni idea. Esto me ha perseguido durante algún tiempo. Cambiar el incluir a wp-load.php hizo la diferencia. Así que, al final del día, supongo que FUE la actualización de WordPress que provocó el problema.
    • Sí, deseo que me había encontrado esto antes. Tim Gracias!
    • «yo en realidad no uso wordpress» tengo que hacer y, obviamente, usted sabe mucho más que yo…eres impresionante!!
    • Tim y Mike, te amo tanto ! 🙂 Acaba de comenzar en la depuración de la cuestión cuando me enteré de su respuesta. Ciertamente no se habría tomado algo de tiempo y estoy en un plazo de
    • Su respuesta es totalmente correcta y trabajó para mí, muchas gracias!
  2. 3

    He añadido un ajax.php archivo en una plantilla de WordPress una vez, y tenía este problema.

    Lo resuelto simplemente añadiendo en la parte superior de ajax.php

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

    Tipo de hack, pero funcionó.

    • He puesto que tanto en la parte superior y la parte inferior de la secuencia de comandos PHP, pero no ayuda.
    • Debe ser justo después de incluir wp-header.php, si mal no recuerdo.
    • Sí, lo intenté. Aún no funciona. Finalmente fue resuelto. Gracias por tu tiempo y paciencia!
  3. 3

    Nadie ha publicado esto como una respuesta, así que vale la pena destacar. Usted debe ser incluida wp-load.php en lugar de wp-blog-header.php.

    Si se abre wp-blog-header.php vamos a ver por qué:

    if ( !isset($wp_did_header) ) {
    
        $wp_did_header = true;
    
        require_once( dirname(__FILE__) . '/wp-load.php' );
    
        wp();
    
        require_once( ABSPATH . WPINC . '/template-loader.php' );
    
    }

    Si sólo la salida json para una operación de AJAX, que hacer no necesidad de incluir template-loader.php. Esto creará una sobrecarga innecesaria, y luego, por supuesto, proporcionar el error 404.

    Esta ‘solución’ es necesario para las actuales y futuras versiones de WordPress. Estoy asumiendo que nada últimos 3.0 debe incluir wp-load.php como se indica.

  4. 1

    General no hay un montón de lugares donde WordPress devolverá un mensaje de error 404. Puedo recomendar grepping el árbol de código fuente de esos lugares y la colocación de algunos de depuración de código de seguimiento por qué está sucediendo.

  5. 0

    Basado en la respuesta de Tim, he cambiado el gancho se me fue la captura de «wp» a «init» en mi plugin y dejó de darme el error 404.

  6. 0

    Yo tenía el mismo problema.

    La Corrección.

    Cambio:

    require_once('wp-blog-header.php');

    A:

    require_once('conn.php');
    require('wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();

    Esto también va a solucionar el encabezado HTTP errores, si usted desea tener una página fuera de WP.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea