【问题标题】:How to make href="#" work like a submit button in PHP?如何使 href="#" 像 PHP 中的提交按钮一样工作?
【发布时间】:2013-08-11 05:09:33
【问题描述】:

我有一个表格,我想单击其中的内容,然后在同一个 Wordpress 插件管理页面上显示一个新表格及其内容详细信息(由我的 PHP 函数 pop_details() 创建,我在其中传递 href 值作为参考),如 Oracle 子表单。

不幸的是,我的代码不起作用(当我单击 href 链接时没有任何反应,但其余按钮都在起作用),当涉及到代码时,我是一个纯粹主义者:D 所以我不想要一个提交按钮透明背景来做到这一点(除了这种方式真的更好)所以如果你能帮助我,我一定会感激的。谢谢。

表格详情:

...
echo "<td><a href='#' name='order_selected' value='".$myData->orderid."'>"
.$myData->orderid."</td>";
...

ISSET:

<?php
    if (isset($_POST['order_selected']))
    {
        $myOrderSel = $_GET['order_selected'];
        pop_details($myOrderSel);
    }
?>

【问题讨论】:

  • 您能否将提交按钮设置为带有 CSS 的链接或使用 javascript。比如 jQuery form.submit() 函数?
  • 请注意这一点。由于&lt;a&gt; 标签下的name 属性是一个锚名称(已弃用,id 现在正在使用)而不是发布/获取的东西,因此使用一个小的 JS tweks 设置隐藏输入以执行 onCLick提交您的&lt;a&gt;

标签: php wordpress href isset


【解决方案1】:

1) 如果您不想使用静态方法检索某些 POST 值,则必须使用带有隐藏元素的 &lt;form&gt;...

2) 否则,您可以使用 Jquery 进行 Ajax 调用,例如:

$('a').click(function() {
   $.ajax({
   url : $(this).attr('href'),
   data : {$(this).attr('name') : $(this).attr('value')}
   });
});

3) 或者您可以通过使用 href 来使用 GET 值,如下所示:

"<a href='#?order_selected = ".$myData->orderid."' name='order_selected' value='".$myData->orderid."'>"

然后在 PHP 中检索它:

isset($_GET['order_selected'])

要明确

此 PHP 代码有效:

<?php
  if(isset($_GET['test'])) {
      exit($_GET['test']);
  }
  echo "<a href='?test=mytest'>This is my test</a>";
?>

【讨论】:

  • 嗨@JoDev,感谢您的回复,我已按照您的建议修改了我的代码。但是,我想知道为什么即使我添加了一个 echo 语句并且它甚至没有通过 isset 条件它仍然不起作用,如果你有时间,我已经将整个代码粘贴如下:
  • 抱歉,看起来很糟糕:
  • 你能用你的新代码更新你的第一篇文章,看看你现在在做什么! (不要犹豫,创建一个 [fiddle](www.jsfiddle.net))
  • 伙计们,我非常感谢您的努力,但我尝试了所有建议,但仍然无法正常工作。请给我发电子邮件 geobgs@gmail.com 以便我可以将 php 文件发送给您。提前致谢。
  • 好,我来做个小提琴,请大哥等一下。
【解决方案2】:

试试这个: 我假设你的 html 代码中有&lt;form&gt; 标签

数据值='".$myData->orderid."

echo "<td><a href='#' name='order_selected' data-value='".$myData->orderid."'>"
.$myData->orderid."</td>";

$('a').click(function() {
    var url = <FILE_NAME>; /*filename where you want to submit the data*/
    $.post(url+"?order_selected="+$(this).data('value'),
        $('form').serializeArray(),
        function(res){
            console.log(res);
        }
    );
});

【讨论】:

  • 嗨@Mangesh Parte 和其他人,感谢您的回复,但我想我错过了一些东西,我已经尝试了您的所有建议,但这里是压缩脚本:
  • ...
    ...
  • "; ... echo "".$myData ->orderid.""; ...回声“”; ?>
  • @LogicMaster 将此行 var url = &lt;createpo.php&gt;; 替换为 var url = 'createpo.php';
【解决方案3】:

我认为我放弃了这篇文章,因为您的所有答案都是正确的,但是我觉得我的 SSL 和站点安全性是阻止我运行脚本的原因,我最终看到没有权限页面。但是,我要感谢您的努力。大家都很棒:D

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签