我有一个由AJAX执行的PHP脚本,除了我用来关闭div的实际PHP文件中的js脚本外,该PHP脚本都可以正常运行(如果PHP文件不是通过AJAX运行的,则所有脚本都可以使用FYI)。

这是ajax不在PHP文件中运行的脚本

 echo "<script> closeOne('" . $postid . "'); </script>";

关闭div的JS脚本包含在页面的标题中

这是我正在使用的AJAX脚本

<script type="text/javascript">
function mainload(str)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest(str);
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("loadmain").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","mainload.php?page="+str,true);
    xmlhttp.send();
}
</script>

任何帮助,将不胜感激。

#1楼 票数:0

默认情况下,不执行ajax响应中的JS。 您必须解析并标识JS语句,然后使用js的eval函数运行它们。 请参阅以下代码作为示例以启动自己的代码:

var sc=xmlhttp.responseText;            
sc=sc.replace(/[\n\r\t\v\u00A0\u2028\u2029]{1,}/gm, ''); //Remove all types of White Space
sc=sc.match(/<.*?script.*?>.*?<\/.*?script.*>/gm); //divide into array, all the script tags

然后,您将循环每个“ sc”并在循环中运行以下命令:

abc=loop_var.replace(/<.*?script.*?>(.*?)<\/script>/gm, "$1"); //remove script/open close tags and get JS only
eval(abc);

#2楼 票数:0

如果将脚本元素添加到DOM元素的innerHTML中,JS将不会立即运行。 因为刚刚添加了该脚本元素。

并且该标记根本不会被解析。

理想情况下,您应该以JSON包装函数的形式发送响应。

您可以从PHP页面发送这样的输出。

echo "(function(){ closeOne('" . $postid . "'); })";

作为响应,您可以使用eval评估包含函数的此String。

 codeToExecute = eval(xmlhttp.responseText);

然后调用该函数,

 codeToExecute();

注意 :从服务器发送函数并使用eval直接执行它可能是出于安全考虑。 请小心,最好使用一些JS libraray函数将字符串评估为JSON对象。

jQuery,原型和sencha的库中将有String-To-JSON转换器。 最好使用它们,或者如果浏览器支持,JSON.parse也是一个不错的选择。

但我希望这个概念对您很清楚。

或者 ,您可以仅以JSON格式从服务器发送帖子ID,并在响应中调用closeOne,如下所示:

在PHP中,

echo "{post_id:".$postid."}";

当回应来临时,

responseObject =  eval("("+xmlhttp.responseText+")");

closeOne(responseObject.post_id);

  ask by user1677608 translate from so

未解决问题?本站智能推荐:

1回复

用AJAX加载div后无法执行Javascript代码

我有一个名为landscape.php的php文件。 在这里,我调用了另一个名为colorList.php的php文件。 在此文件中,我有3个按钮来选择颜色数量:4,5和6。单击任何按钮时,我都会调用一个js文件,该文件具有ajax函数,以在div = container中显示正确的选择集。
1回复

为什么我的php代码在ajax执行时无法执行

好的,我试图将我的网站进行ajax化,并且在首页上出现了一个重大问题,即使用原始ajax并使用responseText,此外,还有一棵文件树用于使用某些功能 首先是问题文件代码 继续此文件位于包含树中,如index->​​ updateFeed-> ajaxScript(已运
1回复

AJAX表单发送信息,PHP无法执行

几天前,我遇到了一个与此确切形式有关的问题,感谢你们,使用其他PHP进行了修复。 现在,我更改了表单中的一件事,并且不再起作用。 我已经警告所有通过AJAX发送的变量,它们是我需要的正确值。 以下是HTML表单的代码: AJAX在这里: 我试过改变变量,在php等中。 数据库的
1回复

无法在Javascript中使用ajax加载.php文件

我不是在这里使用 jQuery,而是尝试使用 Javascript 加载几个 .php 文件,以根据用户的输入显示数据库中的数据。 下面是我的函数的示例(其中大部分是相似的): 下面是服务器中索引的屏幕截图。 “sample.html”是显示所有数据的页面。 但是,在检查“sample.html
2回复

从ajax.post方法执行后显示一个php页面

我有一个格式为id =“ date_select”的html页面和一个id =“ display”的div块。 index.html js代码是: js代码将日期发送到php脚本。 现在,我需要在执行后在索引页面的“ display” div块中显示整个view_forms.ph
1回复

Ajax加载页面后无法执行JavaScript脚本

我有一个页面进行AJAX调用并加载整个页面。 加载的页面具有一些Javascript。 javascript在加载时可以在页面上单独运行,但是在由AJAX加载时,JavaScript无法运行。 我不知道我在想什么。
1回复

在javascript(AJAX或其他)中加载php文件

我试图在过去几个小时内完成我网站的一页,同时实现以下目标。 单击按钮时,应发生以下情况 出现下载链接(完成 - 有效) 应该打开 mySQL 表并增加一个计数器就我得到的分数而言。 Javascript 无法处理,因此我们可以使用 AJAX 或 jQuery。 我已经在查看不同的帖子和网站,例
1回复

PHP可以通过AJAX加载Javascript吗?

我需要使用PHP加载动态创建的JavaScript。 在完成一些ajax请求之后,是否有任何好的解决方案来加载PHP创建的JavaScript? 谢谢,我在stackoverflow中搜索2h。 如果我在HTML / js响应的地方调用.ajax函数,则jquery将杀死js; /