Ghi link ngắn gọn trong Ajax 2007-07-12 12:06:45

Thông thường khi sử dụng ajax chúng ta hay đặt link dạng:
<a href="#" onclick="ajaxLoad(url,id)">Click</a>
hoăc <a href="javascript:ajaxLoad(url,id)">Click</a>

Với cách này nếu trên 1 site có nhiều link thì sẽ làm tăng dung lượng file .html rất nhiều, TG dùng cách khác để ghi các link này
<html>
<head>
<script>
function ajaxLoad(url,id){ alert('url: '+url+'id:'+id);}
function htmlBASIC(){
   obj    = document.getElementsByTagName('a');
   for(i=0;i<obj.length;i++) {
       href    = obj[i].getAttribute("href").replace(/^http:\/\/[^\/]+/i, "http://"+window.location.hostname+"/")
       id        = obj[i].getAttribute("rel");
       rev        = obj[i].getAttribute("rev");
       if(this.id) {
           obj[i].setAttribute("href", this.href);
           obj[i].onclick = function() {ajaxLoad(this.getAttribute("href"),this.getAttribute("rel")); return false;}
           }
       else if(this.rev) {
           obj[i].onclick = function() {document.getElementById(this.rev).style.display = 'none'; return false; }
           }
       }
   }
window.onload = function() { htmlBASIC();}

</script>
</head>
<body>
<a href="url" rel="id">Click</a>
-> tương đương với 2 câu trên
<a href="#" ref="id">Click</a>
-> set thuộc tính display: none cho tag có id = "id"
* nếu ghi: <a href="url">Click</a> thì được hiểu là link bình thường.
</body>
</html>


Ghi rõ nguồn www.phpbasic.com khi phát hành lại nội dung bài viết này

Tra loi 9 comment(s) NguyÅn Minh Tân 2007-07-12 12:06:45

Quoc Hung 2007-07-13 13:26:52

Mình bị lỗi o dòng:

Error: syntax error
Source Code:
href    = obj[i].getAttribute("href").replace(/^http://[^/]+//i, "http://"+window.location.hostname+"/")

Tra loi

ABC 2007-09-06 04:19:07

Ví dụ mình load 1 file về trong file đó có nội dung là:
<a href='abc.html' rel='hienthi'> Thì nó ko có tác dụng.
Chỉ có tác dụng ngay tại file chủ à.

Tra loi

NữThần 2007-10-08 09:11:50

href    = obj[i].getAttribute("href").replace(/^http:\/\/[^\/]+/i, "http://"+window.location.hostname+"/")

Tại sao phải có câu này.
TG có link như thế này: /discuss/view/54. Vậy câu lên trên có thừa hay không, vả lại link này đã rewrite rùi hả, trong ajax link rewrite vẫn hoạt động bình thường hả?

Tra loi

darkera13 2007-10-09 02:37:50

Link rewrite hoạt động bình thường vì thằng ajax nó có cần hiểu cái link đó là gì đâu, nó chỉ gửi lên server như thế. Server hiểu thì trả kết quả về cho nó, nó hiển thị.

Tra loi

NữThần 2007-10-09 11:41:21

Còn cái câu lệnh phía trên em hỏi đấy?Là để làm gì, chỉ đi nèo...

Tra loi

NữThần 2007-10-21 10:23:21


Bà con ráng trả lời dùm đi:
<?
href
= obj[i].getAttribute("href").replace(/^http://[^/]+/i, "http://"+window.location.hostname+"/")
?>
Câu này làm gì vậy, cái link của em nó có dạng thế này:
<a href="/include/test.php"> Test </a>, thì có sao không?

Tra loi

uoon 2007-10-21 08:52:40



Bà con ráng trả lời dùm đi:
<?
href
= obj[i].getAttribute("href").replace(/^http://[^/]+/i, "http://"+window.location.hostname+"/")
?>
Câu này làm gì vậy, cái link của em nó có dạng thế này:
<a href="/include/test.php"> Test </a>, thì có sao không?


Hix đọc code của bác TG loằng ngoằng thật.

Cái câu bạn hỏi có thể nó làm việc như thế này:
VD:

<a href="http://include/test.php"> Test </a>
được chuyển thành:
<a href="http://www.phpbasic.com/include/test.php"> Test </a>

với điều kiện site của bạn là phpbasic, còn nếu domain của bạn là gì gì thay vào chỗ www.phpbasic.com đấy.
Chưa test nên cũng không biết có đúng ý ông TG không?


Tra loi

Vy Quang Hoa 2008-08-13 06:50:37

Bác nào có thể hướng dẫn cái ajax của mấy trang nhạc không , chẳng hạn như trang nhạc.vui.vn đó, không hiểu họ làm thế nào, link chỉ có dạng <A href="#url">Link</a> thế thôi mà chạy , ko hiểu nổi. Xin các bác giúp đỡ

Tra loi

TNguyễn 2008-11-17 10:05:36

Hàm trong mấy trang nhạc nè:
lastUrl = '';
function checkUrl()
{
url=window.location.href;
if (url != '' && url!=lastUrl)
{
c_url=window.location.href;
c_url=c_url+'#';
c_url=ct_url.split('#');
c_url=c_url[1];
if (c_url)
                    ajaxLoad(c_url);
lastUrl=url;
}
}
setInterval('checkUrl()',500);



Tra loi

Y kien