簡體   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