我使用的是codeigniter 3,我使用ajax时遇到了一个奇怪的问题。我试图同时调用两个ajax,我认为我的ajax代码有问题而且我问了question here并且没有任何对我有用。
我一直在使代码更简单并缩小范围,直到我发现问题似乎与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 = "<?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
});
}
我的PHP代码,在下载控制器中,我有两个仅用于测试的功能:
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*/ {
虽然我可以让它发挥作用,但我仍然想知道它为什么会发生?还有更好的解决方案吗?