我有一个表格和字段“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);
它可以工作,并将使用参数:Michael Jordan刷新页面。
所以我的问题是:这个脚本有什么问题?我的意思是,为什么变量player_name
突然被遗忘了?如何解决?
答案 0 :(得分:4)
你需要这个:
setTimeout(function() {
ajax_update_entries(player_name);
}, 30000);
该变量未被遗忘,问题在于您将函数调用作为字符串传递给setTimeout
。然后发生的是,它通过eval
(顺便说一下是not good),没有原始上下文,因此javascript解释器不知道要传递什么。因此错误。