使用jquery发布变量并在其他页面上接收它

时间:2011-01-01 19:31:22

标签: javascript jquery post

我想将变量id发布到网页上。我正在尝试以下代码,但我无法获取id值,它说undefined

function box(){
    var id=$(this).attr("id");

    $("#votebox").slideDown("slow");
    $("#flash").fadeIn("slow");

    $.ajax({
        type: "POST",
  //I want to post the "id" to the rating page.
        data: "id="+$(this).attr("id"),
        url: "rating.php",
        success: function(html){
            $("#flash").fadeOut("slow");
            $("#content").html(html);
        } 
    });
}

在以下代码中调用此函数。在以下代码中,ID也会发布到页面votes.php,并且工作正常,但在上面的代码中,当我尝试将ID发布到rating.php页面时,它不会发送。

$(function(){
$("a.vote_up").click(function(){

the_id = $(this).attr('id');
$("span#votes_count"+the_id).fadeOut("fast");
$.ajax({
        type: "POST",
        data: "action=vote_up&id="+$(this).attr("id"),
        url: "votes.php",
        success: function(msg)
        {
            $("span#votes_up"+the_id).fadeOut();
            $("span#votes_up"+the_id).html(msg);
            $("span#votes_up"+the_id).fadeIn();
            var that = this;
            box.call(that); 
        }
    });
});       
 });

rating.php

<?
$id = $_POST['id'];
echo $id;
?>

html部分是:

<a href='javascript:;' class='vote_up' id='<?php echo $row['id']; ?>'>Vote Up!</a>

我会批评任何帮助。

2 个答案:

答案 0 :(得分:2)

如果您尚未安装firebug,我认为您应该先安装{。}}。

接下来我将id输出到console:

var id=$(this).attr("id");
console.log(id);

id很可能不是你想象的那样。如果正确,那么你可以继续阅读。

来自jquery文档

  

示例:提示结果   请求test.php另外一个   数据有效载荷(HTML或XML,   取决于返回的内容。

$.post("test.php", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

这可能有效:

$.post("rating.php", { id: id }, function(data) {
  console.log(data);
});

答案 1 :(得分:1)

这里的问题是在AJAX事件处理程序的上下文中this是什么。你的AJAX:

$.ajax({
    type: "POST",
    data: "action=vote_up&id="+$(this).attr("id"),
    url: "votes.php",
    success: function(msg)
    {
        $("span#votes_up"+the_id).fadeOut();
        $("span#votes_up"+the_id).html(msg);
        $("span#votes_up"+the_id).fadeIn();
        var that = this;
        box.call(that); 
    }
});

success处理程序中,this不是事件处理程序中的元素。相反,它是来自AJAX请求的XMLHTTPRequest对象。您需要在事件处理程序之外缓存that

var that = this;
$.ajax({
    type: "POST",
    data: "action=vote_up&id="+$(this).attr("id"),
    url: "votes.php",
    success: function(msg)
    {
        $("span#votes_up"+the_id).fadeOut();
        $("span#votes_up"+the_id).html(msg);
        $("span#votes_up"+the_id).fadeIn();
        box.call(that); 
    }
});