ajax调用控制器codeigniter中的函数

我使用codeigniter 3,我使用ajax有一个奇怪的问题。 我试图同时调用两个ajax,我认为我的ajax代码有问题,我在这里问了这个问题 ,没有任何关系。

我一直在使代码更简单并缩小范围,直到我发现问题似乎与codeigniter有关

这是我的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 = "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 = "download/sleep_download"; $.ajax({ url: download_url, method: "POST", async: true }); } 

我的PHP代码,在下载控制器中,我有这两个function只是为了测试:

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

将ajax调用到控制器下载,它显示了使第二个调用保持挂起直到执行第一个调用的问题。

我创建了两个php文件并将它们放在/public/sleep_download.php和/public/sleep_status.php中

并且在两个文件中只是代码的睡眠行,并且它按照我的意愿工作,而第一个调用正在运行,第二个ajax调用已被多次执行。

编辑:我可以通过使类不从CI_Controller扩展来使它工作,我创建了一个名为Action的新类,我评论了这一部分:

 class Action /*extends CI_Controller*/ { 

虽然我可以使它工作,我仍然想知道它为什么会发生? 还有更好的解决方案吗?