奇怪的Ajax行为

时间:2013-07-12 17:03:46

标签: php jquery ajax codeigniter

我正在制作小项目,基本上是Codeigniter上的CRUD类型项目。我正在使用Messi Jquery Modal Library,使用Messi.load ajax加载控制器。

问题。

// Edit Operator
$('.edit_details').on('click', function() {
var edit_id = $(this).attr('id');

$.getScript("<?php echo $this->config->base_url() ?>media/js/jquery-1.10.2.min.js");
Messi.load('<?php echo $this->config->base_url() ?>index.php/option/detail/' + edit_id);
$.getScript("<?php echo $this->config->base_url() ?>media/js/validation.js");
});

当我用ajax加载模态框时,我还为模态内容加载了jquery库和一些jquery函数,例如validation.js

控制器

// check operator
public function detail($id)
{
    $this->load->model('Option_Model', 'option');

    $data['result'] = $this->option->checkOperator($id);
    $data['states'] = $this->option->getStates();

    $this->load->view('option', $data);
}

除了ajax加载问题外,一切都很完美。我几乎完成了项目并突然发现, simetimes jquery无法正常工作

例如:

当我加载其中一个Messi模式框时,我也使用$ .getscript和load ip.address.js jquery插件,因为我加载了一些需要IP地址验证的视图。有时工作,有时不工作。我搜索了所有可能的东西,尝试了我可以但却无法理解问题的原因,为什么它有效,有时却没有。

我在这些模态框中也有很多ajax jquery函数,它们工作正常但是函数,从$ .getscript加载有时会出现问题。

编辑: 这是我的模态框中的IP地址声明。

var ipAddress = (function(){
    $('.ip').ipAddress();
});
ipAddress();

前两次尝试没有奏效,第三次有效。

enter image description here

1 个答案:

答案 0 :(得分:0)

您的脚本是异步加载的,因此您无法保证它们的加载顺序。

我也很困惑你为什么要使用jquery函数加载jquery $.getScript() ...

但无视这一点,您应该在加载依赖项后加载脚本:

$.getScript('/path/to/dependency', function(data, textStatus, jqxhr) {
    $.getScript('/load/dependant/script/here');
});

http://api.jquery.com/jQuery.getScript/

您还应该查看jQuery具有的Deferred对象,这样可以轻松加载多个依赖项:

http://api.jquery.com/category/deferred-object/