如何使用PHP的'include'使用ajax调用包含的javascript函数?

时间:2014-10-26 01:09:52

标签: javascript php ajax include

我使用ajax(不是jQuery,简单的JavaScript)来调用一个包含'包含'另一个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按预期处理。

如果(例如)所包含的文件具有标识为'any_random_id'的元素,则javascript代码document.getElementById将适用于该元素并能够检测到它。但是说它有一个名为' do_something()' - 如果我尝试调用该函数,则没有任何反应。它不喜欢它。

我尝试在脚本块上使用eval()(通过给它一个id) - 在这种情况下,javascript正确执行,但是具有(比方说)属性"onchange='do_something()'"的元素不在&# 39;真的对改变做了什么。

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

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

1 个答案:

答案 0 :(得分:0)

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

W3Schools: XML Parser