我有一个启动模态窗口的点击功能。在模态窗口内部我加载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的click函数。像这样:
<a id="testmodal" href="" var id ="5">Test</a>
答案 0 :(得分:1)
您的代码将无法首次运行,因为$_GET
上没有任何数据,因此该函数将出现语法错误,并且链接将“正常”运行。在第二次单击时,您将具有id
参数,因此它将打开模态。
现在,我不太了解您的实现背后的逻辑,但如果您只想将值传递给Click处理程序,则可以使用数据属性:
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){
...
});
答案 1 :(得分:0)
PHP在客户端甚至发送数据之前运行(PHP由您的服务器运行)。如果您检查来源,您将看不到任何来源
也就是说,请看这个问题:How can I get query string values in JavaScript?。