使用ajax调用时,php页面中的脚本未执行

时间:2014-08-01 18:00:48

标签: php ajax

请在下面阅读我的情景...... 我有一个PHP文件,其中我有javascript ..

 <?php
   echo ‘<script>’;
   echo ‘window.alert(“hi”)’;
   echo ‘</script>’;

 ?>

直接执行此文件时,脚本内的内容按预期执行。但是如果通过另一个页面的ajax调用同一页面,则不会执行脚本部分。 你能告诉我可能的原因吗? (注意:我强迫在php页面中有脚本)。

1 个答案:

答案 0 :(得分:1)

当您进行AJAX通话时,您只需抓取该页面中的内容即可。 JavaScript将其视为字符串(而不是代码)。您必须在AJAX回调中将页面中的内容添加到DOM中。

$.get('/alertscript.php', {}, function(results){
    $("html").append(results);
});

确保更改代码以满足您的需求。我假设你使用jQuery ......

已编辑的版本

load('/alertscript.php', function(xhr) {    
    var result = xhr.responseText;  

    // Execute the code
    eval( result ); 

});



function load(url, callback) {
    var xhr;

    if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
    else {
        var versions = ["MSXML2.XmlHttp.5.0", 
            "MSXML2.XmlHttp.4.0",
            "MSXML2.XmlHttp.3.0", 
            "MSXML2.XmlHttp.2.0",
            "Microsoft.XmlHttp"]

        for(var i = 0, len = versions.length; i < len; i++) {
        try {
            xhr = new ActiveXObject(versions[i]);
            break;
        }
            catch(e){}
        } // end for
    }

    xhr.onreadystatechange = ensureReadiness;

    function ensureReadiness() {
        if(xhr.readyState < 4) {
            return;
        }

        if(xhr.status !== 200) {
            return;
        }

        // all is well  
        if(xhr.readyState === 4) {
            callback(xhr);
        }           
    }

    xhr.open('GET', url, true);
    xhr.send('');
}