我正在尝试修改模块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();
}
?>
答案 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
}
?>