Javascript 从TPL中运行PHP

Javascript 从TPL中运行PHP,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图修改模块TPL文件,但遇到了一些困难 我有一个下拉列表,希望在用户从列表中选择一个项目时运行SQL查询。 到目前为止,我试图通过Ajax运行一个PHP文件来运行查询,但没有成功。 我看过各种各样的例子,但不明白应该如何做。 然而,这是我迄今为止所做的 这是我在TPL文件中使用的代码: <select id="statusSelect" onChange="updateStatus({$order.id_order|escape:'html':'UTF-8'})"> <op

我试图修改模块TPL文件,但遇到了一些困难

我有一个下拉列表,希望在用户从列表中选择一个项目时运行SQL查询。 到目前为止,我试图通过Ajax运行一个PHP文件来运行查询,但没有成功。 我看过各种各样的例子,但不明白应该如何做。 然而,这是我迄今为止所做的

这是我在TPL文件中使用的代码:

<select id="statusSelect" onChange="updateStatus({$order.id_order|escape:'html':'UTF-8'})">
<option value="1"> test1 </option>
<option value="2"> test2 </option>
<option value="3"> test3 </option>
</select>

测试1
测试2
测试3
这是我用来通过Ajax调用PHP文件的JS函数:

<script type="text/javascript">
    function updateStatus(order_id_sent)
    {   
    //TEST
    //alert(document.getElementsByTagName("option")[selectedIndex].value + " " + order_id_sent);    
    $.ajax({
    url: 'setStatus.php', 
    type: 'get',
    data: 'ajax=true',
    success: function()
    {
    alert("It worked");
    }
    });
    }
    </script>

函数updateStatus(订单id已发送)
{   
//试验
//警报(document.getElementsByTagName(“选项”)[selectedIndex].value+“”+order\u id\u sent);
$.ajax({
url:'setStatus.php',
键入:“get”,
数据:“ajax=true”,
成功:函数()
{
警惕(“它起作用”);
}
});
}
下面是我要调用的setStatus.php文件:

<?php
include_once('../../../../../config/config.inc.php');
include_once('../../../../../init.php');
public function doStuff()
{
echo "alert('test');"; 
return 1;
}
if ($_GET['ajax'])
{
echo function doStuff();
}
?>
使用

在您的代码中,函数的名称是
statusUpdate
,在选择中调用
updateStatus


我希望这能帮助您

最后,通过使用以下脚本运行PHP文件,我找到了问题的解决方案。 似乎我必须从GoogleAPI导入JQuery,并在脚本前后使用{literal}

以下是更新后的javascript:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
{literal}
<script type="text/javascript">
    function setStatus(order_id_sent)
    {
        var selectedIndex = document.getElementById("statusSelect").selectedIndex;
        // test
        // alert(document.getElementsByTagName("option")[selectedIndex].value + " " + order_id_sent);
        var data = document.getElementsByTagName("option")[selectedIndex].value + "-" + order_id_sent;
        $.ajax({
            data: data,
            type: "post",
            url: "setStatus.php>",
            success: function(data){
            alert("data sent" + data);
            }
        });
    }
</script>
{/literal}

{literal}
函数setStatus(订单id已发送)
{
var selectedIndex=document.getElementById(“statusSelect”).selectedIndex;
//试验
//警报(document.getElementsByTagName(“选项”)[selectedIndex].value+“”+order\u id\u sent);
var data=document.getElementsByTagName(“选项”)[selectedIndex].value+“-”+订单id\u发送;
$.ajax({
数据:数据,
类型:“post”,
url:“setStatus.php>”,
成功:功能(数据){
警报(“已发送数据”+数据);
}
});
}
{/literal}
这是我的PHP文件,它还没有完成,但关键是要运行查询,现在它可以正常工作了

<?php 
include_once('../../../../../config/config.inc.php');
include_once('../../../../../init.php');
include_once('../../../../../classes/Db.php');

if(isset($_REQUEST))
{
    error_reporting(E_ALL && ~E_NOTICE);
    $words = explode('-', $_POST['data']);
    //add code to update db
}
?>


在打开错误报告时仔细查看您的php文件。我看到的第一件事是您正在调用js函数
updateStatus
,但您的函数名是
statusUpdate
感谢您的注意,在我将代码写到帖子时,这是我的一个错误。实际代码没有这个问题。谢谢您的帮助,但是我的onchange函数似乎工作正常。问题是php文件似乎没有执行。请将“echo function doStuff();”替换为“echo doStuff();”或“doStuff();”,然后重试?谢谢您的帮助,但我只是尝试了两种方法,结果是一样的。
<?php 
include_once('../../../../../config/config.inc.php');
include_once('../../../../../init.php');
include_once('../../../../../classes/Db.php');

if(isset($_REQUEST))
{
    error_reporting(E_ALL && ~E_NOTICE);
    $words = explode('-', $_POST['data']);
    //add code to update db
}
?>