PHP内部JavaScript-报价问题


PHP Inside JavaScript - Quotes Issue?

下午好,

我一直在四处寻找这方面的信息,但都没有找到。这个想法是有一个表单,它使用选择框来显示mysql数据库中的信息。这主要是用html/php完成的,但我添加了JavaScript功能,允许用户按下按钮创建一个额外的选择数组,以指示其他产品。我目前面临的问题是,我似乎无法让php在JS innerHTML中工作。

订单添加.php

<script src="/js/addProduct.js" language="Javascript" type="text/javascript"></script>
    <tr>
        <td>Product(s)</td>
        <td><div id="dynamicInput">
            <select name="orders_product[]">
                <option value="">Select One</option>
                <?php
                        $orders_product_query = $conn->prepare("SELECT product_name FROM product");
                        $orders_product_query->execute();
                        $orders_product_query->bind_result($orders_product_result);
                        while ($orders_product_query->fetch()) {
                            echo "<option value = '$orders_product_result'>$orders_product_result</option>";
                        }
                        $orders_product_query->close();
                ?>
            </select>
            </div>
            <input type="button" value="Add product" onClick="addInput('dynamicInput');">
        </td>
    </tr>

addProduct.js

var counter = 1;
var limit = 10;
function addInput(divName) {
if (counter == limit) {
    alert("You have reached the limit of adding " + counter + " products.");
} else {
    var newdiv = document.createElement('div');
    newdiv.innerHTML = "
        <select name='orders_product[]'>
        <option value=''>Select One</option>
        <?php
            $orders_product_query = $conn->prepare('SELECT product_name FROM product');
            $orders_product_query->execute();
            $orders_product_query->bind_result($orders_product_result);
            while ($orders_product_query->fetch()) {
                echo 'test';
            }
            $orders_product_query->close();
        ?>
        </select>";
    document.getElementById(divName).appendChild(newdiv);
    counter++;
    }
}

在我尝试运行的所有测试中,问题似乎出在addProduct.js的newdiv.innerHTML部分。我认为它不接受php,但也可能是我的内部引号搞砸了。

提前感谢您的帮助!

我想您还不了解这是如何工作的。PHP代码是在客户端请求服务器端的页面时执行的。JS是在客户端执行的。web浏览器上没有PHP解释器。您可以将PHP代码放在一个单独的文件中(例如:fragment.PHP),并通过AJAX调用它。在这种情况下,您的代码将在服务器中执行。

我希望这能有所帮助!

addProduct.js是否包含为标签?如果是这样,请查看您的开发人员工具。这可能与您在这里发布的内容完全一样,php标记是文本的一部分。您需要将该文件的扩展名更改为.php,并在脚本标记中更改它,以便让php解析该文件。

或者,您可以尝试一些类似@NMO建议的设计,并通过AJAX检索它。