【问题标题】:script within a php page not executed when called using ajax使用 ajax 调用时未执行 php 页面中的脚本
【发布时间】:2014-08-01 18:00:48
【问题描述】:

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

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

 ?>

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

【问题讨论】:

标签: php ajax


【解决方案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('');
}

【讨论】:

  • 我正在使用 javascript ajax 调用...不是 jquery ajax.. :(
  • 如果您只是使用 XHR 对象,那么它会稍微复杂一点,但仍然保持不变。
  • xhr.onreadystatechange = function() { if (xhr.readyState == 4) { alert(xhr.responseText); } }
  • 非常感谢@justin.. 但我不清楚 xhr 对象。我使用链接w3schools.com/ajax/tryit.asp?filename=tryajax_first中给出的普通ajax调用
  • 如果您从 php 脚本中删除
猜你喜欢
  • 2020-02-04
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多