Javascript 在PHP循环中调用js函数,同时将PHP变量作为参数传递给其中一个函数
好的,我们已经创建了两个javascipt函数,我想在php循环中调用它们,同时将php变量作为参数传递给第二个函数Javascript 在PHP循环中调用js函数,同时将PHP变量作为参数传递给其中一个函数,javascript,php,Javascript,Php,好的,我们已经创建了两个javascipt函数,我想在php循环中调用它们,同时将php变量作为参数传递给第二个函数 addElements($filePath) createPost(); addElements('filepathA'); addElements('filepathB'); addElements('filepathC'); createPost(); addElements('filepathD'); addElements('filepathE'); // ... 这
addElements($filePath)
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
这个filePath变量必须是来自内部循环的最后一个变量,我想这样写不会从第一个循环得到第一个变量
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
以下是我想要的,以及到目前为止我所写的:
<script>
<?php foreach( glob( 'posts/*' ) as $filePath ){
//createPost(); call js function declared in header
foreach( glob( $filePath.'/*' ) as $filePath ){
//addElements($filePath) call second hs function declared in header here i pass the last $filePath from the second loop as parameter
}
}?>
</script>
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
再次尝试,但仍然不起作用
<script>
<?php foreach( glob( 'posts/*' ) as $filePath ){
//createPost(); call js function declared in header
echo 'createPost()';
foreach( glob( $filePath.'/*' ) as $filePath ){
//addElements($filePath) call second hs function declared in header here i pass the last $filePath from the second loop as parameter
echo 'addElements('.$filePath.')';
}
}?>
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
PHP仅在服务器端执行,因此不能有执行javascript函数的PHP循环(javascript=客户端)。但是,您可以在服务器上生成javascript代码,并在客户端执行
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
因此,简单的解决方案是写下这样的内容:
<script>
<?php
foreach( glob( 'posts/*' ) as $filePath ){
echo 'createPost();'; // call js function declared in header
foreach( glob( $filePath.'/*' ) as $filePath ){
echo 'addElements("'.$filePath.'");'; // call second hs function declared in header here i pass the last $filePath from the second loop as parameter
}
}
?>
</script>
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
正如你所看到的,这里没有循环。另一个解决方案是在服务器端创建一个数据数组,并使用json\u encode
php函数来获得可以在客户端使用的javascript数据:
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
<?php
$results = [];
foreach( glob( 'posts/*' ) as $filePath ){
$subDirs = [];
foreach( glob( $filePath.'/*' ) as $filePath ){
$subDirs[] = $filePath;
}
$results[] = [
'dir' => $filePath,
'subDirs' => $subDirs
];
}
echo 'var data = ' . json_encode($results) . ';';
?>
现在您有了一个javascript数组,可以像往常一样使用:
createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...
for (var i = 0; i < data.length; i++){
createPost();
for (var j = 0; j < data[i].subDirs.length; j++){
addElements(data[i].subDirs[j]);
}
}
for(变量i=0;i
不可能。php在服务器上运行,js在客户端上运行。不能让PHP调用js函数调用(并让它们执行)同时调用PHP。php可以输出包含JS函数调用的文本,当客户端接收到页面时,它们将运行,但仅此而已。但我在网上看到了echo的可能解决方案请参阅我的editStrange问题。PHP可以输出页面加载时执行的纯javascript代码。您只需使用脚本标记并将javascript作为视图的一部分输出即可。您可能需要重新思考您的代码。尝试阅读.ajax()(jQuery)并通过JSON编码(PHP JSON_encode())传递数据我知道有更好的方法使用ajax和json,但我对php不太熟悉这就是为什么我这样做的原因,但我确信这是可以实现的。我所做的是将文件的url传递到js函数中。请务必意识到,当php执行脚本时,Javascript不会运行。只有当PHP完成脚本时,浏览器才会加载整个页面,并且只有在那时才会执行Javascript。