在我的代码中,我在file_1.js中定义函数并从file_2.js调用它 和文件的顺序是
public function actionExport_csv() {
$model = new Companies();
$session = Yii::$app->session;
if(isset($_POST['download'])){ if(!empty($_POST['selectedcols'])) {
foreach($_POST['selectedcols'] as $check) {
echo $check;//what will be the code here to download column in selectedcols
}
}
}
任何人都可以帮我解决如何从另一个JS文件中调用该函数的问题吗?
File_1.js
<script type="text/javascript" src="File_1.js"></script>
<script type="text/javascript" src="file_2.js"></script>
file_2.js
(function( $ ) {
function ps_get_posts( divid, type, query_args, cb) {
var cb = cb || function () {};
$.ajax({
url: ajaxpagination.ajaxurl,
type: 'post',
data: {
action: 'ajax_pagination',
type: type,
query_args: query_args
},
success: function( html ) {
cb();
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
}
})( jQuery );
答案 0 :(得分:1)
您的ps_get_posts
完全属于您定义它的ready
回调。你不能从ready
回调的外部调用它而不以某种方式暴露它。
你可以将它设为全局,但浏览器上的全局命名空间令人难以置信地拥挤,一般情况下,尽可能避免使用全局变量。
一个选项是将自己限制为单个全局,这个对象可以放置您在文件之间访问所需的功能。所以在File1.js
你可能会这样做:
var MyApp = {
ps_get_posts: function( divid, type, query_args, cb) {
var cb = cb || function () {};
$.ajax({
url: ajaxpagination.ajaxurl,
type: 'post',
data: {
action: 'ajax_pagination',
type: type,
query_args: query_args
},
success: function( html ) {
cb();
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
}
};
...然后在File2.js中:
MyApp.ps_get_posts(/*...*/);
如果您还有其他功能,则需要使用相同的方法,然后将它们添加到一个全局对象MyApp
。
答案 1 :(得分:0)
您的问题不是该功能在另一个文件中,而是在另一个范围内。我给你举个例子:
$(function () {
function myFunction() {
console.log('Hello world!');
}
myFunction(); //here the function exists
});
myFunction(); //here the function does not exist
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您可以创建一个存储实用程序函数的全局对象,以使它们可以访问,就像jQuery那样:
window.MyUtils= window.MyUtils || {}
window.MYUtils.myFunction= function (...) {...};