查询和javascript变量的问题

时间:2014-07-15 17:30:16

标签: javascript ajax

我知道这需要使用AJAX,但我不知道从哪里开始。

<td class="dataTableContent" valign="top">
    <div>
        <input id="<?php echo " update_products[ " . $orders_products_id . "] [backorder_date] "; ?>" name="<?php echo " update_products[ " . 
    $orders_products_id . "][backorder_date] "; ?>" size="10" ?>onChange="backorderDate('
        <?php echo $orders_products_id; ?>')" value='
        <?php echo tep_date_short($order->products[$i]['backorder_date']); ?>'>
    </div>
</td>

所以我这里有一个输入框,要求用户输入一个延期订单日期,如果他们的产品有一个。现在,如果您注意到我有一个事件激活此输入框的函数onChange。

function backorderDate(pid)
{
<?php
    $prod_id = "<script language='JavaScript'>pid;</script>";
    echo $prod_id;

    $query_send = tep_db_query("SELECT backorder_date from pos_products WHERE 
orders_products_id= '$prod_id' ORDER BY backorder_date DESC");
    $final = tep_db_fetch_array($query_send);
?>

alert("There has been a change to the Back Order Date and this may
 change the In Stock checkbox.");
alert("<?php echo $final; ?>");
}

然后如上所示,这是被调用的函数。我将变量从输入框传递给函数,并将其命名为“pid”。然后这是问题的开始。我需要该变量的内容才能在查询中调用正确的信息。显然,我所遇到的是错误的,而且很可能需要AJAX。任何人都可以把我推向正确的方向吗?

2 个答案:

答案 0 :(得分:0)

你不能从这样的javascript做SQL。它不仅不可能,而且存在巨大的安全风险。假设PHP正确输出输入,请将您的javascript函数更改为如下所示:

function backorderDate(pid)
    {
    $.ajax ({
        url: "backend.php",
        data: pid,
        success: function(data) { 
             ///do whataever you want here
        }
    })
}

然后创建一个名为backend.php的PHP文件,您可以在其中执行查询,处理结果并将数据发送回jQuery函数。

编辑:

再看一遍,我不确定你在这里做了什么:

 <input id="<?php echo " update_products[ " . $orders_products_id . "] [backorder_date] "; ?>"               name="<?php echo " update_products[ " . 
$orders_products_id . "][backorder_date] "; ?>" size="10" ?>onChange="backorderDate('
    <?php echo $orders_products_id; ?>')" value='
    <?php echo tep_date_short($order->products[$i]['backorder_date']); ?>'>

你可能意味着这样的事情? :

 <input id="<?php echo $update_products[orders_products_id][backorder_date]; ?>"                          
 name="<?php echo $update_products[orders_products_id][backorder_date]; ?>" 
 size="10" 
 onChange="backorderDate('<?php echo $orders_products_id; ?>')" 
 value='<?php echo tep_date_short($order->products[$i]['backorder_date']); ?>'>

如果没有看到更多代码,我无法解读所有这些变量的来源。

答案 1 :(得分:0)

我不是PHP wiz,但我猜你的JS函数中的PHP会被解析,并且在实际运行该函数时不存在。因此,script标记是不必要的。

function backorderDate(pid) {
    <?php echo $prod_id ?> = pid;