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*/ {
虽然我可以使它工作,我仍然想知道它为什么会发生? 还有更好的解决方案吗?