Я пытаюсь добавить текст загрузки, который будет отображаться, пока функция AJAX выполняется уже давно, и все мои попытки (включая использование ajaxStart и ajaxStop, между прочим) не работают вообще. Любая помощь приветствуется!Добавление загружаемого текста во время выполнения функции AJAX
Here - это веб-страница, на которой находится данный сценарий, если вы хотите увидеть его в действии. Способ, которым он работает, заключается в том, что вы вводите URL-адрес, и функция будет захватывать метатеги этого URL-адреса.
Между тем, вот соответствующий HTML, JavaScript и PHP:
HTML
<!DOCTYPE html>
<html>
<head>
<title>Keywords Grabber</title>
<script src="ajax.js"></script>
<script>
function display(content) {
document.getElementById("displaydiv").innerHTML = content;
}
window.onload = function() {
document.getElementById("btn1").onclick = function() {
var url = document.getElementById("txt1").value;
doAjax("metatags.php", "url=" + url, "display", "post", 0);
}
}
</script>
</head>
<body>
http://<input type="text" id="txt1" value="" />
<input type="button" id="btn1" value="Get Keywords" />
<h3>Keywords Received:</h3>
<div id="displaydiv"></div>
</body>
</html>
JavaScript
function getXMLHttpRequest() {
try {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
return new ActiveXObject("Msml2.XMLHTTP");
}
}
catch(e) {
return new XMLHttpRequest();
}
}
function doAjax(url, query, callback, reqtype, getxml) {
var myreq = getXMLHttpRequest();
myreq.onreadystatechange = function() {
if (myreq.readyState == 4) {
if (myreq.status == 200) {
var item = myreq.responseText;
if (getxml == 1) item = myreq.responseXML;
eval(callback + '(item)');
}
}
}
if (reqtype.toUpperCase() == "POST") {
requestPOST(url, query, myreq);
} else {
requestGET(url, query, myreq);
}
}
function requestGET(url, query, req) {
var myRandom = parseInt(Math.random()*99999999);
if (query == '') {
var callUrl = url + '?rand=' + myRandom;
} else {
var callUrl = url + '?' + query + '&rand=' + myRandom;
}
req.open("GET", callUrl, true);
req.send(null);
}
function requestPOST(url, query, req) {
req.open("POST", url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(query);
}
PHP
<?php
$tags = @get_meta_tags('http://'.$_REQUEST['url']);
$result = $tags['keywords'];
if(strlen($result) > 0) {
echo $result;
} else {
echo "No keywords metatag is available.";
}
?>
лол, слишком поздно, чтобы прочитать все это. В любом случае, все, что вы делаете, имеет скрытое сообщение загрузки, а затем показывать его непосредственно перед вызовом ajax, а затем для обратного вызова функции ajax скрыть загрузчик. это не так уж сложно. Я бы рассмотрел использование jQuery $ .post (url, {data}, function() {}); – ArtisticPhoenix