通过echo,通过ajax在PHP中执行javascript

时间:2011-08-05 12:05:21

标签: php javascript html ajax

所以我构建了一个登录用户系统,其中包含一个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 ont first first。所以我有这样的东西:

echo "

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

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

";

猜猜看,它不起作用.. 请帮忙

4 个答案:

答案 0 :(得分:1)

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

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

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

创意#2: 使用js框架可以更轻松地获得响应。我知道jQuery在AJAX响应中执行脚本(getScript函数,link)。这是一个问题,答案与Prototype framework相同。

创意#3: 使用eval()。这不是一个好习惯:

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

答案 1 :(得分:0)

php在这里不是问题,在HTML中也不在脚本中。它的工作原理

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

答案 2 :(得分:0)

使用jQuery,它非常强大且易于使用js-library。您可以在成功回调函数中执行此操作,如:

$.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() 

答案 3 :(得分:0)

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

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