Javascript函数发布和调用php脚本
Posted
技术标签:
【中文标题】Javascript函数发布和调用php脚本【英文标题】:Javascript function post and call php script 【发布时间】:2013-05-25 21:48:32 【问题描述】:在 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。
【问题讨论】:
【参考方案1】:通过使用 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 注入。不要把这个建议当成书面的。
【讨论】:
【参考方案2】:编辑 2018
是的,我还活着。您可以使用fetch
API 代替jQuery
。除了(猜猜谁?...)IE 11 及以下版本之外,它得到了广泛的支持,但有一个 polyfill。享受现代编码。
Support for fetch 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', // or GET success: function(msg) alert(msg); ); $strSQL = "更新订单集 OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'";【参考方案3】:最简单的方法是构建一个查询字符串并将其附加到 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'];
【讨论】:
【参考方案4】:假设您不想使用 AJAX,您可以在 clickedbutton
函数中执行以下操作:
window.location.replace('path/to/page.php?orderid=' + orderid);
然后在你的page.php中
"...where OrderID = '" . $_GET('orderid') . "'";
(注意连接字符串的点)
【讨论】:
【参考方案5】:你可以这样试试
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文件,那么您可以按照朋友的建议尝试..
【讨论】:
以上是关于Javascript函数发布和调用php脚本的主要内容,如果未能解决你的问题,请参考以下文章
PHP:使用来自 php 的参数调用 javascript 函数
如何将 PHP 字符串传递给 Javascript 函数调用? [复制]
我可以在 JavaScript 点击处理程序中调用 PHP 函数吗?