我希望在条件为真时回显javascript脚本,
此脚本所在的文件是通过另一页的ajax调用的
由于某种原因,它不会回应<script>...</script>
部分。
如果我把常规字符串放在那里它可以工作,但它不会回应javascript。
$max = $int + 10;
if($max >= $num_rows){
$end = "<script>var end=1</script>";
} else {
$end = "<script>var end=0</script>";
}
echo $end;
AJAX: function onScroll(event){ //检查我们是否在更大的窗口底边的100像素范围内。 var closeToBottom =($(window).scrollTop()+ $(window).height()&gt; $(document).height() - 100);
if(closeToBottom) {
if(end==0){
// GET THE 10 NEXT ITEMS;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//document.getElementById("tiles").innerHTML=xmlhttp.responseText;
$('#tiles').append(innerHTML=xmlhttp.responseText);
int = int+10;
// Clear our previous layout handler.
if(handler) handler.wookmarkClear();
// Create a new layout handler.
handler = $('#tiles li');
handler.wookmark(options);
$(function() {
// Select all links whose attribute rel starts with lightbox
$('a[rel^=lightbox]').lightBox();
});
FB.XFBML.parse();
}
}
}
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
var request = $.getUrlVar('item');
if(request!=null){
var allR = "?int="+int+"&item="+request;
} else {
var allR = "?int="+int;
}
xmlhttp.open("GET","tiles.php"+allR,true);
xmlhttp.send();
}
};
有人能解决这个问题吗? Thx提前。
答案 0 :(得分:0)
使用javascript中的eval()加载javascript。只需查看以下示例
var div = document.getElementById("tiles");
div.innerHTML =xmlhttp.responseText;
var x = div.getElementsByTagName("script");
for(var i=0;i<x.length;i++)
{
eval(x[i].text);
}
这是一个小片段代码,您应该在收到响应的地方注入。希望这会有所帮助。
答案 1 :(得分:0)
问题是您必须浏览通过Ajax下载的文档位的DOM树并使用eval
手动评估它,因为出于安全考虑,浏览器不会自动解析并运行通过远程嵌入的JavaScript代码呼唤你。
您可以这样做:
var scripts = domElement.getElementsByTagName("script");
for (var i = 0; i < scripts; i ++) {
eval(scripts[i].text);
}