【问题标题】:executing javascript in PHP through echo, via ajax通过echo,通过ajax在PHP中执行javascript
【发布时间】:2011-10-20 19:43:49
【问题描述】:

所以我构建了一个登录用户系统,该系统具有 int eh html 页面、div 容器和 javascript 文件。在 javascript 文件中,它对不同的 php 页面进行 ajax 调用,然后回显所选表单的 html 代码,然后将其插入 div 容器中。

(因此页面不会刷新 - 它的动态内容。如果有人抓取源代码,他们得到的只是 js 文件和 div 容器)

我的问题是我需要在通过 ajax 调用的 php 中的 echo'd html 中运行一些 javascript。

所以 ajax 调用 php,php 回显一个字符串,然后 ajax 执行 document.getElementById("Container").innerHTML=xmlhttp.responseText;

我的 php 代码有 2 个输入字段,我需要将它作为元素 .focus 放在第一个字段上。所以我有类似的东西被回应:

echo "

<form>
<input name='username' type='text' id='username'>
</form>

<script type='text/javascript'>
document.getElementById('username').focus();
</script>

";

你猜怎么着,它不起作用.. 请帮忙

【问题讨论】:

  • 猜猜看,你发布的代码在我的电脑上运行。
  • 你的意思是你想在document.getElementById('username').focus()作为ajax响应返回之后执行它。
  • Ace 是正确的,停止运行 php 代码,它有效,当我通过 ajax 帖子和 document.getElementById('div_container').responcetext 泵它时......它没有,为什么
  • 它不起作用,因为你没有告诉它被执行。浏览器不知道您已将该代码添加到源代码中。我已经编辑了我的答案并添加了一些想法。最好的一个是使用 js 框架。最简单和最肮脏的方法是使用 eval()。

标签: php javascript html ajax


【解决方案1】:

(因此页面不会刷新 - 它的动态内容。如果有人抓取源代码,他们得到的只是 js 文件和一个 div 容器)

他们仍然可以通过使用 firebug(firefox 插件)或其他一些工具轻松获得完整的源代码。你不能用这种方式保护你的源代码。

想法 #1: 使用 DOM 获取 AJAX 响应,然后将新的 javascript 附加到文档的头部。

想法 2: 使用 js 框架来获取响应,要容易得多。我知道 jQuery 在 AJAX 响应中执行脚本(getScript 函数,link)。这是一个问题,答案与Prototype framework 相同。

想法 3: 使用 eval()。不过,这不是一种好的做法:

eval(document.getElementById('username').focus());

【讨论】:

    【解决方案2】:

    您为什么不将脚本从响应中取出并放入您的接收器代码中?

    document.getElementById("Container").innerHTML = xmlhttp.responseText;
    document.getElementById('username').focus();
    

    【讨论】:

    • 因为我在不止一种“用户名”不存在的情况下使用填充该容器的函数
    【解决方案3】:

    使用 jQuery,它是非常强大且简单的 js 库。您可以在成功回调函数中执行此操作,例如:

    $.ajax({
        url:'your_request_url_here',
        dataType: 'html',
        success:function(html){
            $("#Container").html(html);
            $("#username").focus();
        }
    });
    
    It will be better if you will call the ajax request in the $(document).ready() 
    

    【讨论】:

      【解决方案4】:

      php 在这里没有问题,在 html 中也没有在脚本中。有效

      http://sandbox.phpcode.eu/g/a571a.php

      【讨论】:

      • 我认为他刚刚回显的代码来自 ajax 响应,他想执行它。
      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2011-04-21
      相关资源
      最近更新 更多