자바 스크립트 PHP와 아약스를 잘 활용하고있는 웹 앱을 개발하는 동안.ajax 호출 중에 javascript를 실행하는 방법은 무엇입니까?
나는 나의 터미널을 구축하고 자신의 setTimeout() 재귀 호출이있는) (feed_terminal 전화
display_terminal('feedback_viewer','logs/init-raid-log.txt','Init-Raid');
를 호출 할
var url='../edit_initRaid.php';
status_text('Initializing raid-array. Please wait a moment...');
var xmldoc=ajaxPHP2(url,2);
아무것도하지 않는 PHP 파일보다 그
exec("sudo /usr/bin/./init-raid-drives-web.sh");
이것은 내가 실패한 곳입니다. 이 다음 줄은 php 파일의 exec()가 PHP 파일로 돌아가고 php 파일이 javascript로 반환 될 때까지 실행되지 않습니다. 중요한 것은 아니지만 원래 bash 스크립트가 2 분의 시간 동안 실행되고 javascript가 feed_terminal을 사용하여 html을 성공적으로 업데이트하므로이 방법을 사용하지 않았을 것이라고 확신합니다. 이것은 더 이상 사실이 아닙니다. 다음은
alert("javascript has returned from ajax call");
if (xmldoc) {
status_text('Raid-array initialized successfully. System will now restart.You must re-login to FDAS-Web.');
이 질문
에 대한 코드의 무리를하다 결국 내 질문에, 어떻게 아약스 통화 중에 자바 스크립트를 실행할 수 있습니까? 또는 어쩌면 내 질문에 있어야합니다, 어떻게 edit_initRaid xmldoc exec() 반환 할 때까지 기다리지 않고 반환 할 수 또는 어떻게 exec() 스크립트를 완료하지 않고 반환 할 수 있습니까? display_terminal() 두 가지 일을이, 테이블을 구축하고 페이지에 추가하고, feed_terminal 호출
function initRaidArray(){
if (document.getElementById('initRaid_doubleCheck')){
if (document.getElementById('initRaidHideButtonSpot'))
document.getElementById('initRaidHideButtonSpot').innerHTML = '';
var spot=document.getElementById('initRaid_doubleCheck');
spot.innerHTML='';
spot.innerHTML='This may take a few moments. Please wait.';
}
display_terminal('feedback_viewer','logs/init-raid-log.txt','Init-Raid');
var url='../edit_initRaid.php';
status_text('Initializing raid-array. Please wait a moment...');
var xmldoc=ajaxPHP2(url,2);
alert("javascript has returned from ajax call");
if (xmldoc) {
status_text('Raid-array initialized successfully. System will now restart. You must re-login to FDAS-Web.');
}
}
(로그 파일을 bigDiv, 0)의 가장 중요한 항목은의 setTimeout
function feed_terminal(logFile,bigD,lap){
// AJAX
bigD.innerHTML = '';
var url='../view_xml_text.php';
/*
* lap(0)=clear file , lap(1)=do not clear file
*/
url+='?logFile='+logFile+'&lap='+lap;
var XMLdoc=ajaxPHP2(url,2);
var xmlrows = XMLdoc.getElementsByTagName("line");
alert("xmlrows.length=="+xmlrows.length);
// empty file
if (xmlrows.length==0){
var d = document.createElement('div');
var s = document.createElement('span');
s.innerHTML='...';
d.appendChild(s);
bigD.appendChild(d);
} else {
// Parse XML
for (var i=0;i<xmlrows.length;i++){
if (xmlrows[i].childNodes[0]){
if (xmlrows[i].childNodes[0].nodeValue){
var d = document.createElement('div');
var s = document.createElement('span');
s.innerHTML=xmlrows[i].childNodes[0].nodeValue;
d.appendChild(s);
bigD.appendChild(d);
}
}
}
}
setTimeout(function(){feed_terminal(logFile,bigD,1)},2000);
}
입니다() 호출은 파일의 xml 줄을 반환하는 php 파일에 계속 도달하도록 호출합니다.
function ajaxPHP2(url,key)
{
if (window.XMLHttpRequest) {
xml_HTTP=new XMLHttpRequest();
if (xml_HTTP.overrideMimeType) {xml_HTTP.overrideMimeType('text/xml');}
} else { xml_HTTP=new ActiveXObject("Microsoft.xml_HTTP"); }
xml_HTTP.open("GET",url,false);
xml_HTTP.send(null);
if (key){return xml_HTTP.responseXML;}
}
감사합니다. 도움을 주셔서 감사합니다. –