繁体   English   中英

如何使用Ajax调用使用PHP的“ include”包含的javascript函数?

[英]How do I call javascript functions included using PHP's 'include' using ajax?

我使用ajax(不是jQuery,不是简单的JavaScript)调用一个php文件,该文件“包含”另一个php文件,其中也包含一些javascript代码(具体来说有一个脚本块)。

代码:Javascript :( x是具有此代码的函数的参数)

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200)
    {
        document.getElementById('content').innerHTML = xmlhttp.responseText;
    }
};

xmlhttp.open("POST", "../include/ondemand.php");
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("f=load_page&page=" + x.name);

ondemand.php:

case 'load_page':
    $path = '../include/' . $_REQUEST['page'] .'.php';
    include $path;

包括文件就好了。 PHP已按预期处理。

如果(例如)包含的文件具有ID为'any_random_id'的元素,则javascript代码document.getElementById将对该元素起作用并能够检测到它。 但是说它有一个叫做“ do_something() ”的函数-如果我尝试调用该函数,则什么也不会发生。 好像不存在。

我尝试在脚本块上使用eval() (通过给它一个ID)-在那种情况下,javascript可以正确执行,但是具有(例如)属性"onchange='do_something()'"的元素却没有真正做任何改变。

有解决方案吗? 如果没有,还有其他方法吗?

更新:找到了解决方案: iFrames 使用AJAX,我调用了一个php脚本来加载特定页面(带有必需的前缀等等),然后将其添加到iFrame的src中。 做到了。 谢谢您的帮助 :)

从技术上讲,可以使用.responseXML将AJAX结果解析为对象,然后可以通过函数运行该结果,以使用document.createElement()创建元素。 与事件相关的属性显然需要赋予它们自己的功能,但是您可以eval()与事件相关的属性的内容以及脚本元素的内容。 您需要绝对确定AJAX响应符合100%XML标准,否则将无法正常工作。

W3Schools:XML解析器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM