Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

124
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!