gpt4 book ai didi

javascript - ajax中调用另一个页面的javascript xmlHttp.open

转载 作者:行者123 更新时间:2023-11-28 02:37:05 26 4
gpt4 key购买 nike

我有一个jsp页面DEMO1.jsp,其中我编写了ajax代码每1分钟刷新一次。在DEMO1.JSP中我有

<head>

<script type='text/javascript'>
setInterval(function(){
document.getElementById('bgframe').contentWindow.myInternalFunction();
}, 5*1000);

</script>
</head>
<body onload="AutoRefreshValid();" style="margin:1px;font-family: Serif, Arial,Times, serif;" id="ValidWaybills"><center>

<iframe id='bgframe' style='display:none;' src='DEMO2.jsp'></iframe>

<script type="text/javascript">
function AutoRefreshValid(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("No AJAX");
return false;
}
}
}

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById('ValidWaybills1Valid').innerHTML=xmlHttp.responseText;
setTimeout('AutoRefreshValid()',5*1000);
}
}

xmlHttp.open("GET","DEMO2.jsp",true);
xmlHttp.send(null);



}
</script>
<div id="ValidWaybills1Valid">

</div>

我有 DEMO2.JSP,其中我写了 JavaScript我必须在 DEMO1.JSP 中使用 AJAX 运行该 JavaScript,而不是每 5 秒重新加载一次页面

<head>


<script type="text/javascript">
function callme3(){

<% Date d1 = new Date();
%>
alert("Date is <%=d1%>");
}
</script>
</head>
<body onload="callme3()">



</div>

感谢和问候苏达山

最佳答案

XML Http 请求是关于发送某些内容并检索某些内容。执行检索到的数据不是其工作的一部分。

这是解决您问题的简单/简单的解决方案,但不建议您这样做。

xmlHttp.open("GET", "SU3.jsp", true);
xmlHttp.onload = function(evt) {
var div = document.createElement('div');
div.innerHTML = evt.target.responseText;
document.body.appendChild(div);
};
xmlHttp.send(null);

一段时间后,这段代码最终会使浏览器崩溃。

正确的方法是让 SU3.jsp 以 json 或纯 html 形式返回数据,并将所有逻辑移至 SU2.jsp。

<小时/>

根据您提供的最新信息(应该在第一个版本中提供),解决方案非常简洁。

在 Su2.jsp 上,添加以下代码:

// assume map refers to the map object.
// and I use jQuery here to make the point clear,
// it's ok to use XmlHttpRequest directly.

var timer = null;

function updateMarker() {

$.get('su3.jsp', function(data) {
for (var i = 0; i < data.length; i++) {
var datum = data[i];
new google.maps.Marker({
map: map,
position: new google.maps.LatLng(datum.pos.lat, datum.pos.lng),
title: datum.title
});
}
// after all jobs are done, set timeout for another update.
// use setTimeout() instead of setInterval() to tolerate net latency.
timer = setTimeout(updateMaker, 5000);
});

}

// this should be called in onLoad() handler.
updateMaker();

在 SU3.jsp 上,您应该使用 Content-Type: application/json 输出数据。其输出制造商信息为:

[{"pos":{"lat":-25.363882,"lng":131.044922},"title":"Australia"}]

关于javascript - ajax中调用另一个页面的javascript xmlHttp.open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320136/

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