2013-07-12 40 views
0

我正在做一个小项目,基本上是Codeigniter上的CRUD类型项目。我正在使用Messi Jquery Modal Library,加载Messi.load ajax的控制器。奇怪的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无法正常工作

例如:

当我加载的梅西模框之一,我也用$ .getscript和负载ip.address.js jQuery插件,因为我加载一些认为需要IP地址检查。有时有效,有时不会。我搜索了所有可能的东西,尝试了我所能做到的,但无法理解问题的原因,为什么它有时会起作用,有时候却不能。

我在这些模式框中也有很多ajax jquery函数,它们工作正常,但函数,从$。脚本加载有时会遇到问题。

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

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

魔术 前两次尝试没有成功,第三个工作。

enter image description here

+0

'...不是函数'错误发生,因为当函数被调用时,没有类“ip”的元素存在;那么问题就是弄清楚为什么会发生这种情况以及如何防止它发生。 –

回答

0

你脚本正在异步加载,所以你不能保证它们加载顺序。

我也搞不清楚为什么您使用的是jQuery函数$.getScript()加载jQuery的...

但忽视的是,你应该后,他们的依赖已经被加载加载脚本:

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

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

你也应该看看递延对象的jQuery已经使容易加载多个依赖关系:

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