Appelants ajax aux fonctions du code-code du contrôleur

J'utilise le codeignitre 3 et j'ai un problème étrange en utilisant ajax. J'essaie d'appeler deux ajax simultanément et je pensais avoir un problème avec mon code ajax et j'ai posé cette question ici et rien n'a fonctionné avec moi.

Je continuais de rendre le code plus simple et de le réduire jusqu'à ce que je découvre que le problème semble être avec le codeigniteur

Voici mon code js:

do_download(); get_operation_status(); function get_operation_status() { //var url_process_info = "http://www.example.com/public/sleep_status.php";// this url works as expected var url_process_info = "<?php echo site_url(); ?>download/sleep_status"; $.ajax({ url: url_process_info, dataType: 'json', async: true, method: "GET", success: function (data) { }, complete: function (){ get_operation_status(); } }); } function do_download(){ //var download_url = "http://www.example.com/public/sleep_download.php"; // this url works as expected var download_url = "<?php echo site_url(); ?>download/sleep_download"; $.ajax({ url: download_url, method: "POST", async: true }); } 

Mon code php, à l'intérieur du contrôleur de téléchargement, j'ai ces deux fonctions uniquement pour tester:

  public function sleep_status () { sleep(1); } public function sleep_download(){ sleep (7); } 

En appelant l'ajax au téléchargement du contrôleur, il affiche le problème qui conserve le deuxième appel en attente jusqu'à ce que le premier soit exécuté.

J'ai créé deux fichiers php et les mettre dans /public/sleep_download.php et /public/sleep_status.php

Et dans les deux fichiers juste la ligne de code de sommeil, et cela fonctionne comme je le veux, pendant que le premier appel est en cours d'exécution, le deuxième appel ajax a été éprouvé à plusieurs reprises.

Édité: je pourrais le faire fonctionner en faisant de la classe qui ne s'étend pas de CI_Controller, j'ai créé une nouvelle classe appelée Action et j'ai commenté cette partie:

 class Action /*extends CI_Controller*/ { 

Bien que je pourrais le faire fonctionner, je me demande toujours pourquoi cela se passait-il? Et y a-t-il une meilleure solution?