我有一个从 mysql 生成表的网页。我在每一行的开头都有一个按钮。我希望这样,如果用户决定按下按钮,则该单独行的内容将写入 MySQL 中的新表。
目前我正在考虑让按钮成为另一个连接到mysql并将行插入表的php脚本的href;但是,我认为这将重定向我当前的页面。
我希望按钮运行脚本,而不重定向我的当前页面。这样,用户可以继续分析表格,而不必每次都重新加载页面。
这就是我当前的表的样子。这只是一个片段,表格可能非常大(数百行)
为了做这个客户端,我可以想到几种方法来做到这一点:
Javascript
您可以包含一个 Javascript 库(如曾经流行的 JQuery 库),或自己编写代码,但您可以将其实现为 XMLHTTPRequest,从按钮上的单击处理程序发出。使用库将是最简单的方法。
一个 iframe
创建一个隐藏的 iframe:
<iframe style="display:none;" name="target"></iframe>
然后只需将标签的目标设置为 iframe:
<a href="your_script.php" target="target">...</a>
每当有人点击链接时,页面将被加载到隐藏的 iframe 中。用户不会看到任何变化,但您的 PHP 脚本将被处理。
在这两个选项中,我推荐使用 Javascript 库,除非由于某种原因你不能这样做。
您需要在单击按钮时向 mysql 表中插入一条记录,而无需重新加载页面。为了完成上述任务,您需要使用 AJAX,它将使用 xmlhttprequest 对象在后台向服务器发送 http 请求,从而在不重新加载网页的情况下更新网页。因此,您必须在 javascript 中创建一个函数,该函数将使用 xmlhttprequest 对象向服务器发送 http 请求,并且您还需要定义服务器端处理程序来处理使用 ajax 发送的 http 请求。关于 ajax 与 php 的实现细节,请参考下面链接中提到的示例 http://www.w3schools.com/php/php_ajax_php.asp
使用 jQuery 很容易做到:
<script>
$(function(){
$('#your_button_dom_id').click(function(){
$.ajax({
url: 'your_php_script_url',
type: 'POST', // GET or POST
data: 'param1=value1¶m2=value2', // will be in $_POST on PHP side
success: function(data) { // data is the response from your php script
// This function is called if your AJAX query was successful
alert("Response is: " + data);
},
error: function() {
// This callback is called if your AJAX query has failed
alert("Error!");
}
});
});
});
</script>
您可以在此处阅读有关 jQuery 中 AJAX 的更多信息:http: //api.jquery.com/jQuery.ajax/
您可以在具有隐藏类型的提交按钮之后使用另一个输入标签。
<input class="ButtonSubmit" type="Submit" name="Submit" id="Submit" value="Submit"/>
</p>
<input type="hidden" name="submitted" id="submitted" value="true" />
之后在你的代码顶部使用这个
if (isset($_POST['submitted'])) {
// your code is here
}
这对我有用。您也可以在 wordpress 模板中使用它