我在将数组项从PHP传递给Javascript函数时遇到了一些困难。
我有一个txt文件,如下所示:
recipe1 flour milk
recipe2 egg milk
recipe3 flour salt
我读了txt文件,需要在列表中列出所有食谱:
recipe1
recipe2
recipe3
当用户点击任何食谱时,相应的成分将显示在textarea中。
在我的例子中,我将在textarea中显示
flour milk
如果用户点击recipe1,
egg milk
如果用户点击recipe2等
所以这是我的代码:
这是用我将传递给它的文本填充textarea的JavaScript。
<script language="javascript" type="text/javascript">
function addtext(text){
document.testForm.cmd.value +=text;
}
</script>
这是代码,它逐行读取txt文件并放入
数组中的recipe1,recipe2,recipe3等 另一个阵列中的面粉牛奶,鸡蛋牛奶,面粉盐等。
<?php
$recipe=array();
$ingredient=array();
$fp=fopen("recipes.txt", "r");
while (!feof($fp))
{
$line=fgets($fp);
$line=explode(' ', $line, 2);
$recipe[]=$line[0];
$ingredient[]=$line[1];
}
fclose($fp);
//Print elements
$i=0;
foreach ($recipe as $rec) {
echo '<a href="#" onclick="addtext(\''.$ingredient[$i].'\'); return false">' . $rec . '</a><br />';
$i++;
}
?>
配方列表工作正确,我无法将$ ingredient [$ i]传递给Javascript addtext函数。我尝试过没有成功使用:
$value = echo json_encode($ingredient[$i])
任何帮助都是适用的,
提前致谢。
答案 0 :(得分:2)
我更喜欢json_encode()
整个数组并将其传递给JavaScript。这是一个非常基本的例子:
<?php
$fruits = array(
'cherry',
'grape',
'orange',
);
print '<script>var fruits = ' . json_encode($fruits) . ';</script>';
然后在Javascript中:
console.log(fruits);
将向您展示您必须使用的内容,即:
["cherry", "grape", "orange"]
因此fruits[1]
会返回grape
。
答案 1 :(得分:0)
通常,您应该呈现<script>
内容,例如,像这样
(只是想法,而不是确切的代码):
echo '<script language="">
var value = ' . json_encode($ingredient[$i]) .
'</script>';