我有一个主页,将其称为Main.php。在这个页面上,是一个按钮,当点击它时,会使用Results.php的结果设置div的innerHTML(已经在Main.php上,名为divResults)。javascript XMLHttpRequest打开php文件并执行更多javascript
当调用Results.php时,返回的HTML“这些就是结果”被正确接收并设置为Main.php上divResults的内容。但是,不会执行任何来自Results.php的JavaScript。作为一个例子,我试图做一个简单的window.alert。下面是示例代码:
Main.php链接按钮,开始动作:
<img src="$MyImageSource" onclick=\"ExpandDropdownDiv()\" />
Main.php javascript函数ExpandDropdownDiv():
function ExpandDropdownDiv(){
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("divResults").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Results.php",true);
xmlhttp.send();
}
Results.php代码例如:
<script type="text/javascript">
alert("Success");
</script>
These Are The Results
------------------编辑 - 更新------------------
来自Results.php的简单警报就是一个例子。如果我能够得到这个工作,我相信我可以自己解决我剩下的问题。不过,我注意到有一些评论建议在我设置div的innerHTML后,将警报放在Main.php的javascript中。所以,让我解释一下,在div设置后,我真的想用javascript来做什么。显示一些正常的“选择”html元素,这些元素已经使用jquery和下拉列表扩展名(.js)进行了转换。当用户点击最下面的彩色向下箭头时,div展开,(图片2),并在这个其他.php文件中生成两个“选择”元素... html被返回,并放置在div 。因此,我不需要重新加载整个页面,并且可以将新的选择下拉框放置在现有的下拉菜单下方。
的问题是,以“改造”这些正常选择元素,有一些JavaScript需要进行针对HTML执行:
$(document).ready(function() {
$(".MultiSelect").dropdownchecklist( {firstItemChecksAll: true, maxDropHeight: 300 , searchTextbox: true, width: 100, textFormatFunction: function(options) {
var selectedOptions = options.filter(":selected");
var countOfSelected = selectedOptions.size();
var size = options.size();
switch(countOfSelected) {
case 0: return "All";
case 1: return selectedOptions.text();
/* case size: return "All"; */
default: return countOfSelected + " selected";
}
}
}
);
}
所以,不知何故,我需要能够对执行JavaScript的从其他.php文件生成的HTML。只需调用上面的代码,在我的div内容被填充之后,只重新生成已经存在的下拉菜单,而不是两个新的下拉菜单。
实施例图像
为什么不只是把警报(“成功”);里面的阿贾克斯回调? – kjy112 2011-02-11 16:09:07
@ kjy112 - 你能给我一个例子,我会尝试吗?我几乎没有得到这个代码的工作,甚至没有完全理解它 – Adam 2011-02-11 16:13:27
最简单方法去了解它亚当是不嵌入在您的PHP中的JavaScript,而是在您将ajax回调函数注入php结果后执行JavaScript。 – kjy112 2011-02-11 16:51:18