查询和javascript变量的问题

查询和javascript变量的问题,javascript,ajax,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[ " . $o

我知道这需要使用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。有人能把我推向正确的方向吗?

你不能像这样从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']); ?>'>

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

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

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

很抱歉延迟了,但是如果javascript代码中没有type:post,我如何实际利用backend.php中的变量呢?我在这里忽略了什么吗?是的,在ajax参数中应该有一个类型:“Post”。对不起,我的疏忽。