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

Javascript 在返回的AJAX内容中调用用户定义的JS函数,javascript,ajax,events,Javascript,Ajax,Events,我有一个系统,通过使用AJAX向div加载内容。一切都很好,我可以让div从我的数据库中完美地加载细节,而且效果很好 问题在于: 在返回的div中,我有两个带有onClick事件的按钮。当我试图调用用户定义的函数时,onClick事件会导致错误,onClick=“my_function();”,但当我调用JS定义的函数时,onClick事件不会导致错误 有人知道为什么会这样吗我的函数()在我的页面标题中定义。尽管如此,我也尝试在AJAX返回的内容中定义它,但仍然没有成功 如果您使用prototy

我有一个系统,通过使用AJAX向div加载内容。一切都很好,我可以让div从我的数据库中完美地加载细节,而且效果很好

问题在于:

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

有人知道为什么会这样吗<代码>我的函数()在我的页面标题中定义。尽管如此,我也尝试在AJAX返回的内容中定义它,但仍然没有成功


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


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


检查prototype

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


然后可以使用匿名函数

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


然后可以使用匿名函数

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

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

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


另一方面,如果您是手工操作(我刚才做的一件事),您需要自己检测和解析脚本。

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

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

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


另一方面,如果您是手工操作(我刚才做过一件事),您需要自己检测和解析脚本。

好的,下面是简单的答案。。我的按钮元素名称和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);
  }
功能删除账户(账户id){
创建_请求();
var url=“accounts\u ajax.php?action=delete\u account&account\u id=“+account\u id;
显示分区(“操作窗口”);
document.getElementById('action_window')。innerHTML='
正在加载…'; open(“GET”,url,true); xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState!=4)返回;if(xmlHttp.status==200){reload_div('action_window',xmlHttp.responseText);}; xmlHttp.send(空); }

它只会在第二次出现错误。

好的,下面是简单的答案。。我的按钮元素名称和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);
  }
功能删除账户(账户id){
创建_请求();
var url=“accounts\u ajax.php?action=delete\u account&account\u id=“+account\u id;
显示分区(“操作窗口”);
document.getElementById('action_window')。innerHTML='
正在加载…'; open(“GET”,url,true); xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState!=4)返回;if(xmlHttp.status==200){reload_div('action_window',xmlHttp.responseText);}; xmlHttp.send(空); }

第二次出现错误。

用onclick和javascript函数发布链接Elijah,抱歉,我无法让您访问内部系统。。我可以给你一些代码吗?用onclick和javascript函数elijah发布链接,对不起,我不能让你访问内部系统。。我可以给你一些代码吗?我没有使用prototype或jquery等,只是基本的js函数。我没有使用prototype或jquery等,只是基本的js函数。嗨,保罗,我没有传递脚本,只是在onclick事件中传递带有函数调用的html。脚本是在我的原始页面的头部定义的。嗨,Paulo,我没有传递脚本,只传递onclick事件中带有函数调用的html。脚本是在我的原始页面的头部定义的。我经常使用jQuery,所以我会使用$('selector').bind('click',function(){//this is the anon function});你认为这会有什么不同吗?因为onclick=“alert('success');”在AJAX加载的内容中起作用。如果不检查所有代码,很难说。无论出于何种原因,它似乎没有函数的作用域,这就是为什么窗口对象的方法,如alert(),正在工作。不,一切都很好,我现在知道问题出在哪里了。。我真蠢。。元素具有相同的名称