0

我有一个启动模式窗口的点击功能。在模态窗口内部,我加载了 modal_window.php。点击函数如下所示:

$('a#testmodal').click(function(e){
<? $id = $_GET['id']; ?>
varid = <? echo $id; ?>;
        $.get('modal_window.php?id=' + varid, function(data){
modal.open({content: data});});
                e.preventDefault();
            });

我用来触发它的链接如下所示:

<a id="testmodal" href="modal_2.php?id=5">Test</a>

奇怪的是当我第一次点击链接时没有任何反应。但是,当我第二次单击它时,一切正常。这样做的原因似乎是我的代码的 jquery 片段在设置 php 变量 $id 之前第一次运行(jquery 部分运行,然后 php 部分运行)。然后,当我第二次单击链接时(此时单击函数中的 php 变量 $id 已设置)一切正常。

所以我的问题是有没有一种不同的方法可以将变量从我的链接传递到不依赖于 php.ini 的 click 函数。像这样的东西:

<a id="testmodal" href="" var id ="5">Test</a>
4

2 回答 2

1

您的代码第一次无法运行,因为不会有任何数据,$_GET因此该函数将出现语法错误,并且链接将“正常”运行。在第二次单击时,您将获得id参数,因此它将打开模式。

现在,我不太了解您的实现背后的逻辑,但如果您只是想将值传递给您的点击处理程序,您可以使用数据属性:

HTML

<a id="testmodal" href="#" data-id ="5">Test</a>

Javascript

$('#testmodal').click(function(e){
    e.preventDefault();
    $.get('modal_window.php?id=' + $(this).data('id'), function(data){
        modal.open({content: data});}); 
});

这会起作用,但我假设您将有多个链接到不同的模式窗口,因此您可能希望为您的链接提供一个类并将其用作单击处理程序中的选择器,例如:

$('.open-modal').click(function(e){
    ...
});
于 2013-07-03T06:38:11.923 回答
0

PHP 在客户端发送数据之前运行(PHP 由您的服务器运行)。如果您检查源,您将看不到任何

也就是说,请参阅这个问题:如何在 JavaScript 中获取查询字符串值?.

于 2013-07-03T03:55:24.050 回答