如何解决jQuery load一个包含JavaScript的html文件
| 我有一个大难题。我想加载一个.html
文件,其中包含javascript(谷歌地图)代码以在其中渲染div。
maps.html看起来像这样:
<script type=\"text/javascript\">
function getUrlVars()
{
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;
}
</script>
<script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>
<script type=\"text/javascript\">
//<![CDATA[
var hash = getUrlVars();
function load() {
var map = new google.maps.Map(document.getElementById(\"map\"),{
center: new google.maps.LatLng(hash[\'lat\'],hash[\'lng\']),zoom: 14,mapTypeId: \'roadmap\'
});
var infoWindow = new google.maps.InfoWindow;
downloadUrl(\"xmlout_carol.php\",function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName(\"marker\");
for (var i = 0; i < markers.length+1; i++) {
var name = markers[i].getAttribute(\"nume\");
var address = markers[i].getAttribute(\"adresa\");
var type = markers[i].getAttribute(\"id\");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute(\"lat\")),parseFloat(markers[i].getAttribute(\"lng\")));
var html = \"<font face=\'Tahoma\' style=\'font-size:12px;\'><div style=\'min-width:230px;\'><b>\" + name + \"</b> <br/>\" + address +\"<a target=\'_top\' href=\'../statii.php?id=\" + type + \"\'><img style=\'float:right; border:0px; margin-left: 40px;\' src=\'go.png\' /></a><div/></font>\";
var tip = markers[i].getAttribute(\"tip\");
var icon = customIcons[tip] || {};
var marker = new google.maps.Marker({
map: map,position: point,icon: icon.icon,// shadow: \'shaddow.png\'
//shadow: \'http://labs.google.com/ridefinder/images/mm_20_shadow.png\'
});
bindInfoWindow(marker,map,infoWindow,html);
}
});
}
function bindInfoWindow(marker,html) {
google.maps.event.addListener(marker,\'mouseover\',function() {
infoWindow.setContent(html);
infoWindow.open(map,marker);
});
google.maps.event.addListener(map,\'click\',function() {
infoWindow.close(map,marker);
});
}
function downloadUrl(url,callback) {
var request = window.ActiveXObject ?
new ActiveXObject(\'Microsoft.XMLHTTP\') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request,request.status);
}
};
request.open(\'GET\',url,true);
request.send(null);
}
function doNothing() {}
//]]>
</script>
<body onload=\"load()\">
<div id=\"map\" style=\"width: 900px; height: 500px\"></div>
</body>
该脚本将地图渲染到div.map
我想要做的就是将此ѭ0加载到另一个.php
文件中包含的div中,如下所示:
$(\"div#insert_here\").load(\"maps.html?lat=xxx&long=yyy\");
它输出maps.html中包含的div,但没有map no java。
所以问题是...如果.html
文件已经包含JavaScript并将数据输出到.html
文件中的div
,如何在另一个.php
文件中使用jquery加载.html
文件?
非常感谢 !
解决方法
除了加载其中包含HTML和JavaScript的文件之外,您还可以首先加载页面的JavaScript,对HTML进行ajax调用,然后在ajax请求完成后调用JavaScript吗?这将解决此问题带来的许多麻烦。
,正如其他人所说,特别是加载JS,或执行eval()函数;)。
这将解析JS,并使其可以在最初执行。
,我不使用负载,并且使用$ .ajax或$ .post似乎总是更好(更多灵活性,我也建议调用json并使用dataType:\“ json \”。再次更灵活)。
成功将ajaxed html加载到页面后,请使用成功后的回调来运行所需的javascript。您可以调用use beforeSend来加载所需的脚本(尽管除非有充分的理由,否则只需将这些脚本与其他所有脚本一起添加到页面中即可(更可靠/更易于缓存))。
如果google_statii.js需要动态变量,则一种方法是在页面上使用隐藏的输入,并在服务器端填充值,然后在脚本中调用它们。
即。 var x = $(\“ input#myHiddenVariable \”);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。