Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数post和call php脚本_Php_Javascript_Jquery_Html_Mysql - Fatal编程技术网

Javascript函数post和call php脚本

Javascript函数post和call php脚本,php,javascript,jquery,html,mysql,Php,Javascript,Jquery,Html,Mysql,在html中,我有几个按钮,这些按钮是为数据库中具有特定状态的每个对象自动创建的。每个按钮都有自己的id echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>'; 此函数加载按钮

在html中,我有几个按钮,这些按钮是为数据库中具有特定状态的每个对象自动创建的。每个按钮都有自己的id

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>';
此函数加载按钮的编号,使其成为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();
?>
使用Ajax

function clickedbutton(buttonid,orderid){

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

}
在php中,您可以通过$u 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文件,那么你可以按照朋友的建议尝试。

编辑2018

是的,我还活着。您可以使用
fetch
API而不是
jQuery
。除了(猜猜是谁?…)IE 11及以下,它得到了广泛的支持,但有一个polyfill。享受现代编码

旧答案

您必须使用AJAX

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

$.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'];
输出将作为字符串返回到success函数

编辑

您还可以使用速记功能:

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

// or eventually $.post instead of $.get

假设您不想使用AJAX,您可以在
clickedbutton
函数中执行以下操作:

window.location.replace('path/to/page.php?orderid=' + orderid);
然后在您的page.php中

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

(注意连接字符串的点)

最简单的方法是构建一个查询字符串并将其附加到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'];
function clickedbutton(buttonid,orderid){buttonid=“button”+buttonid;$.ajax({data:'orderid='+orderid,url:'statusupdate.php',method:'POST',//或GET success:function(msg){alert(msg);}}}}$strSQL=“updateorders set OrderStatus='Progress'其中orderid='+$POST['buttonid'+'”;
<?php
echo $_GET['buttonid'];
echo $_GET['orderid'];