Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

121
Vistas
¿Por qué obtengo un archivo 2 veces cuando busco un php a través de ajax?

Me resulta bastante curioso. Tengo un archivo de prueba php como este:

 <div class="live-ajax-messages">message from deep ajax</div>

Lo obtendré usando esta función:

 public function get_ajax_messages_template() { ob_start(); include(__DIR__. '/../templates/search-results-messages.php'); $content = ob_get_contents(); exit($content); }

Obtendré esa salida de función como esta:

 load_ajax_messages_template: function(){ jQuery.ajax({ url: ajax_url, data: 'action=my_action', // executes get_ajax_messages_template dataType: 'html', type: "GET", success: function(response){ console.log(response); // getting 2 times <div class="live-ajax-messages">message from deep ajax</div> //this.results_el.find('.ajax-results').html(response); }.bind(this), }) },

Básicamente, conseguiré

 <div class="live-ajax-messages">message from deep ajax</div> <div class="live-ajax-messages">message from deep ajax</div>

¿Por qué?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El almacenamiento en búfer de salida (las funciones ob_* ) almacena temporalmente la salida. Si el script finaliza mientras todavía hay una salida almacenada en el búfer, se escribirá en la respuesta.

Entonces, aquí está almacenando en búfer la salida de search-results-messages.php . La llamada a ob_get_contents devuelve el búfer actual, pero no lo borra.

Luego, cuando llama a exit($contents) está escribiendo el contenido en la respuesta, luego vaciando el búfer de salida que también contiene el contenido.

Hay dos soluciones posibles aquí. (1) es reemplazar ob_get_contents con ob_get_clean que hace lo mismo, pero borra el búfer.

La otra solución (más simple) es simplemente incluir el archivo sin almacenamiento en búfer de salida, ya que desea escribir su contenido de todos modos, luego simplemente llame a exit(); sin parámetros.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda