Javascript函数发布和调用php脚本

IT技术 php javascript jquery html mysql
2021-03-16 06:15:48

在 html 中,我有几个按钮,它们是为数据库中具有特定状态的每个对象自动制作的。每个按钮都有自己的 id。

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>';

该按钮调用 javascript 函数 clickedbutton 并为其提供按钮编号和该按钮的 orderid。

function clickedbutton(buttonid,orderid){
buttonid = "button" + buttonid;

}

该函数加载按钮的编号,并使其成为button0、button1等。orderid也成功通过。现在在函数中我想调用一个外部 php 脚本,但 orderid 也必须传递给脚本。

<?php
    //connect to database
    include_once('mysql_connect.php');

    // Select database
    mysql_select_db("test") or die(mysql_error());

    // SQL query
    $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + orderid + "'";

    mysql_close();
?>

我知道 mysqli 保护等等,我稍后会调整。现在我想重点讨论上面的问题,如何调用变量orderid并将其传递给phpscript。

5个回答

编辑 2018

是的,我还活着。您可以使用fetchAPI 代替jQuery. 它得到广泛支持,除了(猜猜是谁?...)IE 11 及更低版本,但有一个 polyfill。享受现代编码。

支持获取 API

旧答案

您将不得不使用 AJAX。

单独的 Javascript 无法访问 php 脚本。您必须发出请求,将变量传递给 PHP,对其进行评估并返回结果。如果您使用 jQuery 发送ajax请求是相当简单的:

$.ajax({
    data: 'orderid=' + your_order_id,
    url: 'url_where_php_is_located.php',
    method: 'POST', // or GET
    success: function(msg) {
        alert(msg);
    }
});

并且您的 php 脚本应该获得如下订单 ID:

echo $_POST['orderid'];

输出将作为字符串返回到成功函数。

编辑

您还可以使用速记函数:

$.get('target_url', { key: 'value1', key2: 'value2' }).done(function(data) {
    alert(data);
});

// or eventually $.post instead of $.get
功能 clickedbutton(buttonid,orderid){ buttonid = "button" + buttonid; $.ajax({ data: 'orderid=' + orderid, url: 'statusupdate.php', method: 'POST', // 或者 GET 成功: function(msg) { alert(msg); } }); }
2021-04-30 06:15:48
$strSQL = "更新订单设置 OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'";
2021-05-19 06:15:48

假设你不想使用 AJAX,你可以在你的clickedbutton函数中做这样的事情

window.location.replace('path/to/page.php?orderid=' + orderid);

然后在你的 page.php

"...where OrderID = '" . $_GET('orderid') . "'";

(注意连接字符串的点)

通过使用 Ajax。

function clickedbutton(buttonid,orderid){

    $.post("page.php", { buttonid: buttonid })
    .done(function(data) {
        alert("Data Loaded: " + data);
    });

}

在 php 中,您可以通过 $_POST 获得它。

//[..] previous php code
$strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'";
//[..] rest of php code

注意 SQL 注入。不要把这个建议当成书面的。

你可以这样试试

var url = myurl +'?id=' + orderid;
window.location.href = url;

并在 php 页面中

 $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '".mysql_real_escape_string($_GET['id'])."'";

编辑

如果您想在不刷新页面的情况下加载php文件,那么您可以按照朋友的建议尝试..

最简单的方法是构建一个查询字符串并将其附加到 php 脚本 url 的末尾。

function clickedbutton(buttonid,orderid){
    var url = 'script.php?';
    var query = 'buttonid=' + buttonid + '&orderid=' + orderid;

    window.location.href = url + query
}

在 php 脚本中,您可以通过如下方式访问参数:

<?php
echo $_GET['buttonid'];
echo $_GET['orderid'];