从TPL中运行PHP

时间:2017-05-26 12:43:26

标签: javascript php jquery ajax

我正在尝试修改模块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>

这是我用来通过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>

这是我要调用的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();
}
?>

2 个答案:

答案 0 :(得分:0)

使用

$( document ).ready(function() {
  $("#statusSelect").change(function(){
      statusUpdate($(this).val());
  });
}

在您的代码中,该函数的名称为statusUpdate,在您选择的时候调用updateStatus

我希望这可以帮到你

答案 1 :(得分:0)

最后,通过使用以下脚本运行PHP文件,我找到了解决问题的方法。 似乎我必须从google-apis导入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}

这是我的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
}
?>