如何将参数传递给ajaxed循环脚本?

时间:2011-09-19 20:28:35

标签: javascript jquery ajax

此函数获取一个参数并将其传递给此

$.arte({'ajax_url':'getRealTimeUpdates.php?activity_id='+id, 'on_success':updateLiveUpdates}).start();
  

[这行代码从服务器中获取upadtes每个a   特定时间段作为jaxed循环]

当我使用某个参数调用函数showLiveUpdates(id)时,例如id=5,此行记住id = 5,所有这些函数调用甚至不同的参数! 我希望每次用不同的id调用该函数时,这行代码都会得到新的id

{{其中arte是JQuery插件:Ajax实时扩展,这是它的网站click here}}

js code:

function showLiveUpdates(id)
{
    //$.arte().stop();

    $("#liveUpdates").fadeIn("slow");
    $("#liveUpdates").html("");
    $("#liveUpdates").append("<div><textarea rows='2' cols='49' id='txtLiveUpdates'></textarea></div>");
    $("#liveUpdates").append("<div><input type='button' id='btnliveUpdatesShare' value='share' onClick='addComment("+id+","+getCookie("userId")+")'></div>");
    last="";
    $.arte({'ajax_url':'getRealTimeUpdates.php?activity_id='+id, 'on_success':updateLiveUpdates}).start();

}

我称之为:

<input type='button' onClick='showLiveUpdates(<? echo $_GET["id"];?>)' />

修改

function updateLiveUpdates(data)
{
    if(data!=last)
    {
        $("#liveUpdates").append("<div id='updates"+ii+"' style='display:none' >"+data+"</div>");
        $("#updates"+ii).fadeIn();
        last=data;
    }
    ii++;
}

getRealTimeUpdates.php

<?php  

require("database.php");
$activity_id=$_GET["activity_id"];
$query = "SELECT id,comment from comments where activity_id=$activity_id order by id desc limit 0,1";
echo $query;
$result = mysql_query($query);
$row = @mysql_fetch_assoc($result);
echo $row["id"]."-".$row["comment"];

?>

1 个答案:

答案 0 :(得分:1)

这个怎么样?为id变量创建函数范围:

function createData(id) {
    return function () {
        return {
            'ajax_url':'getRealTimeUpdates.php?activity_id='+id,
            'on_success':updateLiveUpdates
        }
    }
}

for (var id = 0; id < 5; i++) {
    $.arte(createData(id)()).start();
}

编辑1 刚看了http://code.google.com/p/arte/source/browse/trunk/jquery-plugin-arte.js处的代码。

共享_config属性会被覆盖,使用的网址始终为_config['ajax_url']

编辑2 我发布了a demo of this here来证明您的问题。所以看起来你不能多次调用这个函数,因为内部状态是共享的。

编辑3 我已经更新了一个jsfiddle,尝试按照您的意愿使这个代码正常工作。 The demo is here。新代码保持无状态,并且(似乎)成功运行5个更新循环,然后在3秒后终止它们。