我有一个我正在处理的php文件列表,在一个php文件中,我能够使这个功能正常工作,但只有当它以这种方式设置时。
<script>
function addingredient() {
var table = document.getElementById("ingredients_table");
var row = table.insertRow(y);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = ' <select name="ingredients[]" style="width: 200px"> <option value="option">option</option></select> ';
cell2.innerHTML = ' <select name="measurements[]" style="width: 200px"> <option value="option">option</option></select> ';
cell3.innerHTML = ' <textarea style="width: 100px" class="form-control" name="amount[]" rows="1"> ';
y++;
changecontent();
}
function changecontent() {
<?php ?>
}
</script>
这是我的问题出现的地方。我不确定我是否可以使用.js文件,但是我在.php中编写了我为此项目所做的一切,到目前为止,我的页面在下拉框中显示变量,具体取决于我的服务器上的内容使其成为数据驱动。我有我的java脚本在它插入的地方工作,但我想将id和内容更改为我的预定义变量,如id = 1,单元格将说tbs,id = 2,cell表示teaspn,依此类推。 / p>
当我尝试访问具有这些分配的变量时,我的问题出现了。出于某种原因,当我按原样保留或删除它有效但如果我尝试对php做任何事情,它告诉我没有定义addredient。
我做错了吗?
我知道的一个例子就是说我做了
function changecontent() {
var temp = '<? ingredientslist ?>';
}
这将显示temp作为引号中的内容,因为它是我指定的值以使我的下拉工作。 如果我在没有引号的情况下再次这样做,它只是说addredient是未定义的。
答案 0 :(得分:1)
我可以注意到,你在php脚本中尝试使用javascript中的一些函数,这是不可能的(php和javascript是不同的语言,它们不会共享函数),你可以做的是将一些变量从一个传递给另一个(我的意思是使用AJAX)。
我真的很想帮助你,但我不理解。
此外,我现在可以做的就是:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
$result = $mysqli->query($query);
$html = "<select name='ingredients[]' style='width: 200px'>";
while ($row = $result->fetch_assoc()) {
$html .= "<option value='option'>$row['column']</option>";
}
$html .= "</select>";
echo $html;
?>
答案 1 :(得分:1)
简答:你不能直接将PHP变量直接传递给Javascript,因为它们都是在不同的时间编译的,PHP是在编译时编译/解释的,javascript是在运行时编译的。
对于您的问题,我建议使用javascript从下拉菜单中获取值,并使用AJAX动态加载内容
<script>
function addingredient() {
//initialize your form elements
var table = document.getElementById("ingredients_table");
var row = table.insertRow(y);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = ' <select name="ingredients[]" style="width: 200px" onchange="changeContent(this)"> <option value="option">option</option></select> ';
cell2.innerHTML = ' <select name="measurements[]" style="width: 200px" onchange="changeContent(this)"> <option value="option">option</option></select> ';
cell3.innerHTML = ' <textarea style="width: 100px" class="form-control" name="amount[]" rows="1"> ';
}
function changeContent(element) {
var selectedOption = element.selected.val();
//Do a AJAX call to call your PHP script
//And change the content in the container element
}