在我现有的代码中,我创建了一个用于放置CSV文件数据的新代码。这很好用。我需要做的是从box1中删除项目并将其替换为此代码。如果我使用jquery,我可以这样做,但不知道如何将我的代码与jquery链接。
是否可以使用jquery的php变量?您将在代码中看到我尝试了一些js代码来遍历var并获取值。但是,这仅显示1个项目,而不是所有项目。
因此,实质上我需要从现有的PHP代码中删除<select>
和<option>
,并将这些项放入我现有的<select>
#box1中。非常感谢
<?php
if (isset($_FILES['csvfile']) &&
is_uploaded_file($_FILES['csvfile']['tmp_name']) &&
$_FILES['csvfile']['size'] > 0) {
echo "<h3>".
"File ".$_FILES['filename']['name'].
" uploaded successfully.".
"</h3>";
//get the csv file
$file = $_FILES['csvfile']['tmp_name'];
$handle = fopen($file, "r");
//loop through the csv file
echo '<select name="box" size="7" multiple="multiple">';
while (($line = fgetcsv($handle, 1000, ',')) !== false) {
foreach($line as $cell) {
$clean = htmlspecialchars($cell);
echo << < OPTION <
option value = "{$clean}" > {
$clean
} < /option>
OPTION;
}
}
echo "</select>";
} else {
echo 'no reults';
}
?>
<select id="box1">
<option></option>
</select>
<script>
var data = <?php echo json_encode($clean); ?>;
//var len = data.length;
//console.log(len);
for (var i=0; i < data.length; i++) {
console.log(data);
}
console.log(data);
</script>
编辑:根据亚历杭德罗回答更新代码
<?php
if (isset($_FILES['csvfile']) &&
is_uploaded_file($_FILES['csvfile']['tmp_name']) &&
$_FILES['csvfile']['size'] > 0) {
//get the csv file
$file = $_FILES['csvfile']['tmp_name'];
$handle = fopen($file,"r");
//loop through the csv file
//echo '<select name="box" size="7" multiple="multiple">';
$file_lines = array(); // Global array
while (($line = fgetcsv($handle, 1000, ',')) !== false) {
$strings = array();
foreach($line as $cell) {
$clean = htmlspecialchars($cell);
array_push($strings, $cell); // Add the string to the array
// echo <<< OPTION
// option value = "{$clean}" > {
// $clean
// } < /option>
// OPTION;
}
array_push($file_lines, $strings); // Add the line data to the global array
}
//echo "</select>";
}
else {
echo 'no reults';
}
?>
<select id="box1">
<option></option>
</select>
<script>
var phpString = "<?php echo json_encode($file_lines); ?>";
var data = JSON.parse(phpString);
for (var i=0; i < data.length; i++) {
console.log(data);
}
</script>
答案 0 :(得分:2)
您可以,但PHP输出是一个字符串,因此您必须用双引号将其括起来:
git bisect
由于它是一个字符串,您必须使用var phpString = "<?php echo json_encode($clean); ?>";
进行解析,因此它将成为您可以使用的Javascript对象/数组:
JSON.parse()
编辑: var data = JSON.parse(phpString);
for ( var i = 0; i < data.length; i++ ) {
console.log(data);
}
是一个字符串,因此无需$clean
。我把答案好像是一个数组,所以我们要创建一个(实际上是两个:一行用于每行数据,另一个用于保存整个文件数据的全局数据 - 数组 - )。在json_encode()
之前添加一个数组,我们会将文件中读取的每个字符串添加到其中:
echo '<select...>';
然后在下面,而不是//loop through the csv file
echo '<select name="box" size="7" multiple="multiple">';
$file_lines = array(); // Global array
while (($line = fgetcsv($handle, 1000, ',')) !== false) {
$strings = array(); // Here, create an array for this particular line
foreach($line as $cell) {
$clean = htmlspecialchars($cell);
array_push($strings, $cell); // Add the string to the array
echo << < OPTION <
option value = "{$clean}" > {
$clean
} < /option>
OPTION;
}
array_push($file_lines, $strings); // Add the line data to the global array
}
,您应该使用:
var phpString = "<?php echo json_encode($clean); ?>";
答案的其余部分应该运作良好。