0

我有一个带有“onclick”选项的表格和字段:

<td class="name" onclick="ajax_update_entries('<?php echo $field['Player']['name']; ?>')">

它调用函数:

function ajax_update_entries(player_name)
  {
  $.post('http://mysite.com/entries/get_entries/' + player_name, function(data)
    {
    $('#gameText').html(data);
    });
  setTimeout('ajax_update_entries(player_name)', 30000);
  }

它做得很好的是点击表格字段后进入请求的页面。它做错了什么,它无法识别 setTimeout 中应该刷新它的“player_name”参数。在 Opera 控制台中,它返回:

未捕获的异常:ReferenceError:未定义的变量:player_name

IE说没有'player_name'的定义。

但另一方面,如果我选择:

setTimeout('ajax_update_entries("Michael Jordan")', 30000);

它可以工作,并将使用参数刷新页面:迈克尔乔丹。

所以我的问题是:这个脚本有什么问题?我的意思是,为什么变量player_name突然被遗忘了?如何解决?

4

1 回答 1

4

你需要这个:

setTimeout(function() {
    ajax_update_entries(player_name);
}, 30000);

该变量没有被遗忘,问题是您将函数调用作为字符串传递给setTimeout. 然后会发生什么,它在没有原始上下文的情况下通过eval(顺便说一句,这不好),所以 javascript 解释器不知道要传递什么。因此错误。

于 2012-11-22T17:36:52.963 回答