变量的值一旦从jQuery中的click函数中改变

时间:2009-08-28 12:18:20

标签: php javascript jquery

这是我上一个问题的延续。由于我刚刚在没有Open Id的情况下登录,我不知道如何登录该帐户并进一步编辑。所以我创建了一个新的Open Id帐户并将其作为一个新问题发布。

现在我有这样的代码。在onclick事件中,值正确地存储在$ selectedId中。但是当我尝试在url中传递该值时,我没有得到正确的值。传递for循环中的最后一个值。

 <script type="text/javascript">

 $(document).ready(function(){

 <?php foreach ($Forms as $r): ?>

    $("<li><a id='<?=$r['Form']['id'];?>' data-attr='Formentries'  href='#'><?=$r['Form']['name']?></a></li>").appendTo("#headers").click(function () {

    <?php $selectedFormId=$r['Form']['id'];?>

    alert("selId: "+<?php echo $selectedFormId;?>); //here the selected id is alerted
   });
 alert("outside the loop"+<?php echo $selectedFormId;?>); //here the last value in the loop is alerted
 });

一旦退出click函数,$ selectedFormId的值将更改为数组中的最后一个值。有人可以帮我弄这个吗?

实际上我想要实现的是,我将一组表单列为链接,当我选择链接时,我希望将其id保存在php变量中。我希望它在我选择一个表单之后特别保存在php变量中我有一个选项可以通过另一个链接导出表单中的条目

 <a href="localhost/FormBuilder/reports/export/<?php echo $selectedFormId;?>" class="thickbox button" title= "Export" >Export</a> . 

所以我想在那里使用id,以便我可以将它传递给控制器​​中的export函数。 我还将javascript变量中的选定ID作为

 formid=$(this).attr("id");

但我不知道如何将此值传递给控制器​​中的导出功能。

4 个答案:

答案 0 :(得分:0)

据我所知,你在迭代中的每个循环中都设置了$ selectedFormId,因此只有在触发click事件时才会设置赋值代码。

因此,从逻辑上讲,退出循环时,$ selectedFormId将是数组中的最后一项。你是否意味着在任务中设置一个条件?别忘了,服务器端代码无论如何都会执行!它不关心客户端条件或关闭!

if (something){
    <?php $selectedFormId=$r['Form']['id'];?>
}

并且,再次回应上述评论,你应该真正尝试实现代码分离。以上真的是tag soup

答案 1 :(得分:0)

我不知道我是否理解你的问题但是$ selectedFormId值是在循环中设置的,所以每次执行循环时都会设置变量,当循环结束时$ selectedFormId获取最后一个处理过的值。我认为你应该把它设置在循环之外。

答案 2 :(得分:0)

因为你在街区内宣布它所以它在外面不可用;

要么在$(document).ready块之前声明它,要么在此块本身内完成它的使用。

答案 3 :(得分:0)

您正在混合客户端和服务器端代码 - 您编写的代码似乎是您希望客户端的JavaScript函数在服务器端神奇地设置PHP变量,而实际上是操作是不可能的。

您应该做的是让您的点击事件在客户端设置变量。然后在导出链接上设置onclick以构建URL并根据本地存储的变量值重定向到该URL。

这可能不是最佳解决方案,但它只是一种选择。