【问题标题】:How to retrieve value/name of <a href..> to PHP variable when modal is involved涉及模式时如何将 <a href..> 的值/名称检索到 PHP 变量
【发布时间】:2023-03-29 16:28:01
【问题描述】:

我有一个所有 href 链接通用的模式,但我需要传递 href 的值,以便我可以设置 PHP 会话变量以进一步使用单击的 href 信息。

例如: 如果我点击href Tokyo,我需要将会话变量'prefecture'设置为'Tokyo',如果我点击'Kanagawa','prefecture' = 'Kanagawa'

我不能使用 GET,因为我正在调用所有 href 链接共有的模式,或者我可能不知道一种有效的方法。 这是代码,

HREF 链接

<section id="area">
            <div class="container inner">
                <div class="train-line">
                    <div class="row">
                        <h2> Kanto Area </h2>
                        <a href="#modal-work03" data-toggle="modal" name="tokyo" id="1" class="btn btn-large">Tokyo</a>
                        <a href="#modal-work03" data-toggle="modal" name="kanagawa" id="2" class="btn btn-large">Kanagawa</a>
                        <a href="#modal-work03" data-toggle="modal" name="chiba" id="3" class="btn btn-large">Chiba</a>
                        <a href="#modal-work03" data-toggle="modal" name="saitama" id="4" class="btn btn-large">Saitama</a>
                        <a href="#modal-work03" data-toggle="modal" name="ibaraki" id="5" class="btn btn-large">Ibaraki</a>                           
                    </div>
                </div>
            </div>
</section>

模态

    <div class="modal fade" id="modal-work03" tabindex="-1" role="dialog" aria-labelledby="modal-work03" aria-hidden="true">

。 . .

请就单击特定 href 链接时如何设置 PHP 会话变量提供建议,以便我可以在其他 PHP 页面上使用该信息。TIA

【问题讨论】:

  • 你用ajax标记了这个,这正是你需要的。只需将点击处理程序添加到您的&lt;a&gt;s 并在后台运行请求,将所选地区作为 GET 参数发送。不确定“我不能使用 GET”是什么意思,为什么不呢?
  • 是的,经过研究,我想我可以用 ajax 完成它,但我对如何通过 ajax 传递变量和设置 php 会话变量完全空白,任何参考链接? TIA
  • 只运行一个请求,比如说,index.php?action=setprefecture&amp;prefecture=Tokyo,然后在 PHP 中处理参数。在服务器上,无论是用户单击链接还是浏览器运行 AJAX 请求,都没有任何区别。

标签: javascript php html ajax


【解决方案1】:

将 onlclick 事件添加到您的锚点:

<a href="#" data-toggle="modal" name="tokyo" id="1" class="btn btn-large"  onclick="setSessionVariable('Tokyo');return true;">Tokyo</a>

在同一页面或包含的 js 文件中添加 javascript 函数(使用 jQuery 或纯 javascript):

jQuery 函数:

function setSessionVariable(varname) {
    $.ajax({url: "setsession.php?vname="+varname, success: function(result){
        alert("ajax function success: " + result);
    }});

仅Javascript功能:

    function setSessionVariable(varname) {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
               document.getElementById("demo").innerHTML = this.responseText;
            }
        };
        xhttp.open("GET", "setsession.php?vname="+varname, true);
        xhttp.send();
    }

添加一个名为“setsession.php”的 php 文件。 在文件中你得到请求变量并设置会话变量:

<?php 
session_start();
$_SESSION['prefecture'] = $_REQUEST['vname'];
echo("success");
exit(0);
?>

当然你会想做一些验证和其他事情,但这取决于你。

更新

将 &vname 更改为 ?vname

【讨论】:

  • 谢谢!这就像一个魅力!我只进行了 1 次编辑 .. 将 &vname 更改为 ?vname 并且有效!!
  • @prats1411 如果您需要知道 ajax 是否失败,您还应该在 ajax 函数中包含失败的场景通知,为简单起见,我没有将它们包含在答案中。
【解决方案2】:

我看到的最佳选择是使用 ajax 并单击类 btn 或给它们都一个不同于 btn 的类名,可能是 modalbtn。然后将名称作为数据参数传递并在那里设置会话。我真的没有看到只用 php 来做到这一点的方法。

【讨论】:

    【解决方案3】:

    使用此代码

    <section id="area">
        <div class="container inner">
            <div class="train-line">
                <div class="row">
                    <h2> Kanto Area </h2>
                    <a href="#" data-toggle="modal" name="tokyo" id="1" class="btn btn-large">Tokyo</a>
                    <a href="#" data-toggle="modal" name="kanagawa" id="2" class="btn btn-large">Kanagawa</a>
                    <a href="#" data-toggle="modal" name="chiba" id="3" class="btn btn-large">Chiba</a>
                    <a href="#" data-toggle="modal" name="saitama" id="4" class="btn btn-large">Saitama</a>
                    <a href="#" data-toggle="modal" name="ibaraki" id="5" class="btn btn-large">Ibaraki</a>
                </div>
            </div>
        </div>
    </section>
    
    <script>
        $('.btn-large').click(function(){
            sessionStorage.city = "";
            var city = $(this) .attr('name');
            sessionStorage.city = city;
        });
    </script>
    

    现在这些数据存储在会话变量中,无论您想访问哪个页面都可以访问该变量

    sessionStorage.city
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多