gpt4 book ai didi

javascript - 使用参数作为字符串调用函数不起作用

转载 作者:行者123 更新时间:2023-11-30 05:43:49 25 4
gpt4 key购买 nike

这是我在页面上显示相册的代码的一部分。如果我这样调用函数

<?php   
for ($key_Number = 0; $key_Number < count($album); $key_Number++) {
echo '<a href="#" onclick="return false" onmousedown="ajax_json_gallery("gallery1)">Gallery1</a><br>';
}
?>

<script type="text/javascript">ajax_json_gallery('gallery1');</script>

它工作正常。 gallery1 是我服务器上的一个文件,里面有测试照片。如果我这样调用它

<?php   
for ($key_Number = 0; $key_Number < count($album); $key_Number++) {
echo '<a href="#" onclick="return false" onmousedown="ajax_json_gallery($album[$key_Number])">'.$album[$key_Number].'</a><br>';
}
?>

<script type="text/javascript">ajax_json_gallery($album[$key_Number]);</script>

这是行不通的。我究竟做错了什么?有任何想法吗?我需要根据用户传递不同的字符串,所以我需要给它一个变量。是的,我的数组 $album 确实包含正确的文件夹名称。

这是被调用的函数。

<script type="text/javascript">

function ajax_json_gallery(folder){
var thumbnailbox = document.getElementById("thumbnailbox");
var pictureframe = document.getElementById("pictureframe");
var hr = new XMLHttpRequest();
hr.open("POST", "json_gallery_data2.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {

if(hr.readyState == 4 && hr.status == 200) {
var d = JSON.parse(hr.responseText);
pictureframe.innerHTML = "<img src='"+d.img1.src+"'>";
thumbnailbox.innerHTML = "";

for(var o in d){
if(d[o].src){
thumbnailbox.innerHTML += '<div onclick="putinframe(\''+d[o].src+'\')"><img src="'+d[o].src+'"></div>';
}
}
}
}
hr.send("folder="+folder);
thumbnailbox.innerHTML = "requesting...";
}

function putinframe(src){
var pictureframe = document.getElementById("pictureframe");
pictureframe.innerHTML = '<img src="'+src+'">';
}

这是获取照片的页面 json_gallery_data2.php

<?php

header("Content-Type: application/json");
$folder = $_POST["folder"];
$jsonData = '{';
$dir = $folder."/";
$dirHandle = opendir($dir);
$i = 0;

while ($file = readdir($dirHandle)) {
if(!is_dir($file) && preg_match("/.jpg|.gif|.png/i", $file)){
$i++;
$src = "$dir$file";
$jsonData .= '"img'.$i.'":{ "num":"'.$i.'","src":"'.$src.'", "name":"'.$file.'" },';
}
}
closedir($dirHandle);
$jsonData = chop($jsonData, ",");
$jsonData .= '}';
echo $jsonData;
?>

最佳答案

这是混合服务器端和客户端代码:

ajax_json_gallery($album[$key_Number]);

变量$album$key_number没有在 JavaScript 中定义,所以它不能使用它们。 (我确定当它“不工作”时,它实际上是在 JavaScript 控制台上告诉您这些变量未定义。)

要从 PHP 发出值,您需要用 <?php ?> 将它们包围起来标签。此外,由于它是 JavaScript 中的字符串,因此需要将其括在 JavaScript 中的引号中。像这样:

ajax_json_gallery('<?php echo $album[$key_Number]; ?>');

关于javascript - 使用参数作为字符串调用函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com