所以我构建了一个登录用户系统,其中包含一个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>
";
猜猜看,它不起作用.. 请帮忙
答案 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中也不在脚本中。它的工作原理
答案 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();