如何在没有错误的情况下分配此变量?

时间:2014-08-19 03:26:02

标签: javascript php

我有一个我正在处理的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是未定义的。

2 个答案:

答案 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
}