在返回的AJAX内容中调用用户定义的JS函数

时间:2009-05-12 02:22:36

标签: javascript ajax events

我有一个系统通过使用AJAX加载带有内容的div。一切都很好,我可以让div完全加载来自我的数据库的细节,它很有效。

问题是:

在返回的div中,我有几个带有onClick个事件的按钮。当我尝试调用用户定义的函数onClick时,onClick="my_function();"事件会导致错误,但当我调用JS定义的函数onClick时,onClick="alert('success');"事件不会导致错误。

任何人都知道为什么会这样? my_function()在我页面的头部定义。虽然,我也尝试在AJAX返回的内容中定义它,但仍然没有运气。

非常感谢任何帮助

4 个答案:

答案 0 :(得分:0)

如果您正在使用prototype,jquery等(任何JS框架),您需要确保已将参数“evalJS”设置为true。最后一个例子我将作品放在原型中。

检查here原型

答案 1 :(得分:0)

您可以尝试通过JavaScript添加事件处理程序,而不是在实际元素上添加onclick处理程序。

然后你可以使用匿名函数。

答案 2 :(得分:0)

如果您只是使用AJAX请求的结果更新innerHTML元素的DIV,请记住,浏览器仅解析HTML而非解析脚本。

可能这就是你收到JavaScript错误的原因。

还要解析查阅库文档所需的脚本。例如,如果您使用的是ASP.NET,则可以调用ScriptManager.RegisterClientScriptBlock以指示AJAX客户端组件解析结果中的脚本。

另一方面,如果你手工完成(我做了一件事),你需要自己检测和解析脚本。

答案 3 :(得分:0)

好的,这是简单的答案..我的按钮元素名称和id与它试图调用的函数相同..愚蠢的错误我知道..无论如何,它现在正在工作..但是,我确实有另一个问题..我的ajax只发射一次..它第一次运行很好,但之后功能不起作用

这是我的代码:

function delete_account(account_id) {
  create_request();
  var url = "accounts_ajax.php?action=delete_account&account_id=" + account_id;

  show_div('action_window');

  document.getElementById('action_window').innerHTML = '<div class="please_wait"><img src="images/working.gif"><br>Loading...</div>';  

  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = function(){if(xmlHttp.readyState!=4)return;if(xmlHttp.status==200){reload_div('action_window', xmlHttp.responseText);}};
  xmlHttp.send(null);
  }

它只是第二次导致错误。