我有一个如下的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链接。我想通过一个表单来做,但我没有提交任何内容,因此在发帖/请求时不会显示任何内容。
答案 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