Belirli bir URL'nin içeriğini alan ve sayfaya yazan basit bir ajax çağrısı oluşturuyorum. JS ben yaşıyorum sorun bu bilgiler buradaJavaScript Document.Write AJAX Kullanırken Tüm Vücut İçeriğini Değiştiriyor
ile tüm vücut içeriğini değiştirir olmasıdır geçerli:
(function(){
var mb = window.mb = {};
function get_ad(url, parameters){
var result = "";
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
var avers = ["Microsoft.XmlHttp", "MSXML2.XmlHttp", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.5.0"];
for (var i = avers.length -1; i >= 0; i--) {
try {
http_request = new ActiveXObject(avers[i]);
if (http_request){
break;
}
} catch(e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = function(){
if (http_request.readyState == 4) {
if (http_request.status == 200) {
gen_output(http_request.responseText);
} else {
alert('Error');
}
}
}
http_request.open('GET', url + parameters, true);
http_request.send(null);
}
function gen_output(ad_content){
document.write("<div id=\"mb_ad\">");
document.write(ad_content);
document.write("</div>");
}
get_ad("http://localhost/test/test.html", "");
})();
ve burada html: incelemek için kundakçı kullanarak
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
i am text before <br/>
<script type="text/javascript" src="mb.js"></script>
<br />
i am text after
</body>
</html>
, Metni daha önce veya metinden sonra görmüyorum, sadece <div id="mb_ad">
ve test.html sayfasından içerik. Ajax çağrısını kaldırırsam ve daha önce sadece 3 document.writes
yazıp metni düzgün gösterecektir. jQuery bir seçenek değil, bunu büyük bir kütüphanenin yardımı olmadan yapmak zorundayım, çünkü boyut ve hız esastır.
, bunu daha muayeneye ihtiyaçlarının tahmin aşağıdaki kodla aynı problem vardı/kırılma noktası. ama "jQuery bir seçenek değil", gerçekten katılıyorum, javascript (google CDN kullanıyorsanız muhtemelen önbelleğe alınır) gerçekten bir web sayfasında bir fark yaratmıyor. Bu güçlü gereksinime sahipseniz bir web sitesinin veya ağ uygulamasının iyi bir fikir olduğundan emin değilim. – Mathieu
ayrıca DOMAssistant veya benzeri gibi hafif kütüphaneler kullanabilirsiniz. – dusoft
, bu betiğin diğer web sitelerine yerleştirileceği gerçeği ile ilgilidir, bu yüzden muhtemelen başka kütüphaneleri kullanan bir siteye jQuery gibi bir kitaplık eklemek veya belki de jQuery'nin kendisi sadece sorunlara neden olacaktır. –