Javascript 如何将参数传递给ajaxed循环脚本?
此函数获取一个参数并将其传递给此Javascript 如何将参数传递给ajaxed循环脚本?,javascript,jquery,ajax,Javascript,Jquery,Ajax,此函数获取一个参数并将其传递给此 $.arte({'ajax_url':'getRealTimeUpdates.php?activity_id='+id, 'on_success':updateLiveUpdates}).start(); [其中,这行代码从每台服务器发送UPADTE 作为jaxed循环的特定时间段] 当我使用一些参数调用函数showLiveUpdates(id)时,例如id=5,这行代码记住id=5,因为所有函数调用的参数甚至不同! 我希望每次使用不同的id调用函数时,这行代
$.arte({'ajax_url':'getRealTimeUpdates.php?activity_id='+id, 'on_success':updateLiveUpdates}).start();
[其中,这行代码从每台服务器发送UPADTE
作为jaxed循环的特定时间段]
当我使用一些参数调用函数showLiveUpdates(id)
时,例如id=5
,这行代码记住id=5,因为所有函数调用的参数甚至不同!
我希望每次使用不同的id
调用函数时,这行代码都能得到新的id
{{其中arte是JQuery插件:Ajax实时扩展,这是它的网站}
js代码:
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();
}
函数showLiveUpdates(id)
{
//$.arte().stop();
$(#liveUpdates”).fadeIn(“慢”);
$(“#liveUpdates”).html(“”);
$(“#liveUpdates”)。追加(“”);
$(“#liveUpdates”)。追加(“”);
last=“”;
$.arte({'ajax_url':'getRealTimeUpdates.php?活动_id='+id',on_success':updateLiveUpdates}).start();
}
我这样称呼它:
<input type='button' onClick='showLiveUpdates(<? echo $_GET["id"];?>)' />
这个怎么样?为
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();
}
函数createData(id){
返回函数(){
返回{
'ajax_url':'getRealTimeUpdates.php?活动\u id='+id,
“on_success”:updateLiveUpdates
}
}
}
对于(变量id=0;id<5;i++){
$.arte(createData(id)().start();
}
编辑1只需查看下面的代码
有一个被覆盖的共享\u config
属性,并且使用的URL总是\u config['ajax\u URL']
编辑2我已经发布了演示您的问题的帖子。因此,看起来无法多次调用此函数,因为内部状态是共享的
edit3我已经更新了一个JSFIDLE,试图让这段代码按照您的意愿工作。新代码不保持任何状态,并且(似乎)在3秒后终止之前成功运行了5个更新循环。正在检查getRealTimeUpdates.php是否返回了不同的结果?是,但是我需要向getRealTimeUpdates.phpAre发送一个参数。你确定函数中的
id
每次都不同吗?当我看到jQuery沿着侧面的侵扰性事件绑定编写时,我会有点内疚。@Adam Terlson抱歉,我不理解“jQuery沿着侧面的侵扰性事件绑定编写”。。问题和可能的解决方案是什么?同样的,我认为问题出在这个函数“$.arte().start();”。。它能记住值。编辑后的答案如何?在循环中添加了内部函数和该函数的即时调用。函数createData(id){return function(){alert(id);return{'ajax_url':'getRealTimeUpdates.php?activity_id='+id',on_success:'updateLiveUpdates}}}}}alert work fine每次都会发送一个新的id,,但是函数返回相同的id!!!ii
来自哪里?这将保留最后一个值,不是吗?您最好在data
对象中传递ii
和指示last
的标志。我已经破解了arte插件,但使用风险自负。但它似乎起作用了!!当您尝试演示时,请确保已打开Firebug Net面板以查看正在激发的请求。
<?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"];
?>
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();
}