Ajax函数包含变量

时间:2012-11-22 17:31:10

标签: php javascript html ajax

我有一个表格和字段“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突然被遗忘了?如何解决?

1 个答案:

答案 0 :(得分:4)

你需要这个:

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

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