JQUERY从链接传递值并返回或转发它

时间:2010-11-30 14:07:01

标签: jquery

我想:

单击下面显示的链接,并将值传递给JQUERY $ .get(我认为必须这样做),这应该可用于SQL片段,其中包含WHERE子句。< / p>

LINK

$sOutput .= '"<a href=\"#whatever?' .addslashes($aRow['id_cruise']) .'\" class=\"flip\">'.addslashes($aRow['from_country']).'</a>",';

当我点击链接时,您会看到Flip类。这确实打开了一个幻灯片面板,我在其中有一个div,它将在SQL查询与发送的值一起使用后填充:

JQUERY SNIPPET

<script type="text/javascript"> 
$(document).ready(function(){
$('a.flip').live('click',function(){
    $(".panel").slideToggle("slow");

  });
});
</script>

正如您所看到的,它使用LIVE功能,以便点击确实可以激活幻灯片打开。但是我需要最后一点,即发送值(id_cruise)的那个。当我将鼠标悬停在行上时,我可以看到ID的值发生了变化,这很好,但是我没有把它传递给代码片段并被SQL查询选中。

所以我可以看到,在链接中,我写“什么”,确实无关紧要,只要它有#符号。请注意,链接是服务器处理文件的一部分,而JQUERY位于用户可见页面文件中,它们位于两个不同的页面中。

从此处更新,包括现在来自JEFF的代码:

链接看起来如此:

$sOutput .= '"<a href=\"#id?' .addslashes($aRow['id_cruise']) .'\" class=\"flip\">'.addslashes($aRow['from_country']).'</a>",';

杰夫明智地指出应该有第三个文件从第二个JQUERY片段获取参数,返回它,第二个文件将传递给位于下方的第三个文件。第三个片段是将其转发到位于幻灯片内部的DIV盒中。

<script type="text/javascript"> 

$(document).ready(function(){
$('a.flip').live('click',function(){
$(".panel").slideToggle("slow");
      DoSomethingWith(this.id);

     });

});
</script>


 <script type="text/javascript">

function DoSomethingWith(id) {
  $.get("SendIdToDatabase.php", {idCruise: id}, AnotherFunction);
}
function AnotherFunction(str) {
  $("#reviews").html(str);
}
</script>

其他贡献者表示可以将其合并并简化为:

$(function() {
      $('a.flip').live('click',function() {
            $('.panel').slideToggle(slow');
            $('#reviews').load('SendIdToDatabase.php', {idCruise: this.id});
      });
});

现在我创建将处理SQL请求的PHP代码(SendIdToDatabase.php)

 <?php


$id_crucero = $_REQUEST['id_cruise']; //this is what I (hopefully) should get from the page
              require ('mysqli_connect.php');

                    $sql ="SELECT description
                        FROM cruises
                        WHERE id_cruise
                        = '".$id_crucero."'";

                        $result = @mysql_query ($sql);

                    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {


                    $reviews = ($row['description']);
                    echo "$reviews";
                    }        

                      ?>

并且从这里开始它应该回到第二个AJAX代码片段,它向面板转发(我已经重新开始“评论”并且它是一个DIV,而不是HTML)

但是某些链接必须在某些方面出现问题,而且价值未被通过或收到。

自12月1日起,价值仍然没有通过。我在PHP脚本中修改了一些文本,是的,它出现在面板内的DIV BOX中,但它没有显示出价值

1 个答案:

答案 0 :(得分:2)

我相信你所寻找的是“这个”对象。在“this”对象中,您可以获取id属性。例如:

<script type="text/javascript"> 
$(document).ready(function(){
$('a.flip').live('click',function(){
    $(".panel").slideToggle("slow");
    DoSomethingWith(this.id);
  });
});
</script>

获得id后,您可以将其传递给另一个使用Ajax进行处理的脚本: 例如:

<script type="text/javascript">
function DoSomethingWith(id) {
  $.get("SendIdToDatabase.php", {idCruise: id}, AnotherFunction);
}
function AnotherFunction(str) {
  $(".panel").html(str);
}
</script>

查看jQuery Get以获取有关发送“get”Ajax调用的文档。

您需要编写php脚本(SendIdToDatabase.php)以使用id执行任何操作。不要忘记在使用它之前从id中删除#Whatever。

至于为什么它需要是一个单独的脚本,您需要了解http请求的“断开连接”性质。 Here are some体面的解释和图表。