Tôi đang tạo một cuộc gọi ajax đơn giản truy xuất nội dung của một url được chỉ định và ghi nó vào trang. Vấn đề tôi đang gặp là nó thay thế toàn bộ nội dung cơ thể với thông tin nàyTài liệu JavaScript.Write thay thế tất cả nội dung nội dung Khi sử dụng AJAX
đây là JS:
(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", "");
})();
và đây là html:
<!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>
sử dụng firebug để kiểm tra, tôi không thấy văn bản trước hoặc sau văn bản, chỉ cần <div id="mb_ad">
và nội dung từ trang test.html. Nếu tôi xóa cuộc gọi ajax và chỉ cần thực hiện 3 document.writes
văn bản trước và văn bản sau sẽ hiển thị chính xác. jQuery không phải là một lựa chọn, tôi phải làm điều này mà không cần sự trợ giúp của một thư viện lớn vì kích thước và tốc độ là bản chất.
tôi không thể tìm thấy những gì có thể là sai với mã của bạn, tôi đoán nó cần kiểm tra nhiều hơn/điểm ngắt. nhưng đối với "jQuery không phải là một lựa chọn", tôi thực sự không đồng ý, 24ko javascript (có thể được lưu trữ nếu sử dụng google CDN) thực sự không tạo sự khác biệt trên trang web. Nếu bạn có yêu cầu mạnh mẽ tôi không chắc chắn một trang web hoặc thậm chí một ứng dụng mạng là một ý tưởng tốt. – Mathieu
hơn nữa, bạn có thể sử dụng thư viện nhẹ như DOMAssistant hoặc tương tự. – dusoft
nó phải làm với thực tế là kịch bản này sẽ được chèn vào các trang web khác, do đó, để thêm một thư viện như jquery vào một trang web có thể sử dụng các thư viện khác, hoặc thậm chí jquery chính nó, sẽ chỉ gây ra vấn đề. –