将Javascript变量传递给PHP链接

时间:2017-04-04 05:29:25

标签: javascript php jquery

我有一个如下的PHP链接,它出现在一个模态中:

<?php echo $this->Html->link('Cart', ['controller' => 'payments', 'action' => 'cart', ]); ?>

我还有一个脚本可以显示该模态:

$('.pay').click(function (ev) {
    ev.preventDefault();
    $('#payModal').modal('show');
    var bookingId = $(this).attr('data-id');
 });

我想尝试将JavaScript变量bookingId传递给PHP链接。我想通过一个表单来做,但我没有提交任何内容,因此在发帖/请求时不会显示任何内容。

3 个答案:

答案 0 :(得分:1)

我依赖于您的HTTP请求中是否有其他GET参数。如果没有,您可以导航到当前路径并附加所需的GET参数。

window.location = '?booking_id=' + bookingId; //navigate to the current page
window.location = './othersite.php?booking_id=' + bookingId; //navigate to another page

这将导航到当前页面,只有booking_id作为GET参数。

如果您想保留其他参数,则必须解析当前网址,附加您的参数,然后将其序列化为网址并将位置更改为该位置。

这里只是澄清一些关于相关链接的事情:

//lets take the following URL as an example
'https://www.example.com/blog/pages/2984?id=3'

''       //current page --> 'https://www.example.com/blog/pages/2984'
'./'     //current 'directory' you are in --> 'https://www.example.com/blog/pages'
'../'    //parent 'directory' --> 'https://www.example.com/blog'
'../../' //2nd parent 'directory' --> 'https://www.example.com'
'/'      //root 'directory' --> 'https://www.example.com'

答案 1 :(得分:0)

在模态脚本中,我添加了以下内容:

$('.pay').click(function (ev) {
    ev.preventDefault();
    var bookingId = $(this).attr('data-id');
    $('#payModal').modal('show'); 
    $('#payModal').attr('bookingId',bookingId); //added in this line, setting the bookingId variable as an attribute of the modal.
});

然后我将PHP链接更改为标准HTML按钮:

<button onclick="cartredirect()">Proceed to Cart</button>

然后触发第二个JavaScript:

<script>
     function cartredirect(){
          var bookingId = $("#payModal").attr('bookingId'); //returns the modal attribute from before.
          window.location = "<?= $host . $basepath ?>/payments/cart/" + bookingId; //now as a result, the page with the correctly appended variable can load.
     };
</script>

答案 2 :(得分:-1)

**

  

因为您已经知道PHP和Js都是脚本语言并且它们是绑定的   在执行变量时,使用您提供的信息   你的js使用

**

$('.pay').on ('click',function (ev) {
ev.preventDefault();
    $('#payModal').modal('show');
    var bookingId = $(this).attr('data-id');
 });

如果这不起作用,则生成链接js并附加到html