gpt4 book ai didi

php - 通过 Ajax 的 Javascript

转载 作者:行者123 更新时间:2023-11-30 06:07:32 25 4
gpt4 key购买 nike

如何通过 ajax 启动 javascript?

html文件

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>FusionCharts 3.0 Dashboard</title>
<script language="JavaScript" src="../FusionCharts.js"></script>
<script language="JavaScript" src="../PowerMap.js"></script>
<script type="text/javascript">
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ajax").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","test.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="chart3" align="center"></div><br />
<div id="ajax"></div>
<input type="button" onclick="loadXMLDoc()" value="test" />
</body>
</html>

php文件

<?
$html = '<script type="text/javascript">
window.onload = function start() {
onClick();
}

function onClick() {
var myChart = new FusionCharts("../Charts/HLinearGauge.swf", "chart3", "580", "80", "0", "0");
myChart.setDataXML("<chart bgColor=\'FBFBFB\' bgAlpha=\'100\' showBorder=\'0\' chartTopMargin=\'0\' chartBottomMargin=\'0\'\n\
upperLimit=\'30\' lowerLimit=\'0\' ticksBelowGauge=\'1\' tickMarkDistance=\'3\' valuePadding=\'-2\' pointerRadius=\'5\'\n\
majorTMColor=\'000000\' majorTMNumber=\'3\' minorTMNumber=\'4\' minorTMHeight=\'4\' majorTMHeight=\'8\' showShadow=\'0\'\n\
pointerBgColor=\'FFFFFF\' pointerBorderColor=\'000000\' gaugeBorderThickness=\'3\'\n\ baseFontColor=\'000000\'\n\
gaugeFillMix=\'{color},{FFFFFF}\' gaugeFillRatio=\'50,50\'>\n\
<colorRange>\n\
<color minValue=\'0\' maxValue=\'5\' code=\'FF654F\' label=\'z\'/>\n\
<color minValue=\'5\' maxValue=\'15\' code=\'F6BD0F\' label=\'x\'/>\n\
</colorRange>\n\
</chart>");
myChart.render("chart3");
}
</script> ';

echo $html;

?>

最佳答案

首先,您要在页面加载后定义一个 window.onload 事件 - 到用户单击按钮时,该事件早就触发了

如果您使用的是 jQuery,请将 window.onload = function start() 更改为 $(document).ready(function(),然后添加一个“);"在函数的末尾。

对于原型(prototype),使用 document.observe("dom:loaded", function()

虽然只调用函数可能更有意义,甚至只是删除函数并直接执行语句

至于 JS 不执行 - 我以前遇到过这个问题,这是因为 innerHTML 不运行任何插入的 JS。如果您使用的是 jQuery,请尝试 $('ajax').append(xmlhttp.responseText)Element.insert($('ajax'), xmlhttp.responseText) 用于原型(prototype)。

尽管根据您自己实现了 AJAX 调用的事实来判断,您可能没有使用任何库。在这种情况下,让您的 PHP 文件只返回没有标签的 JS 会更容易,然后只返回 eval(xmlhttp.responseText)

如果您不想这样做,那么您需要遍历响应 X(HT)ML 中的所有脚本标签并“手动”评估它们的内容

关于php - 通过 Ajax 的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com