Fix URL trong Ajax 2007-07-09 09:38:11
Hướng dẫn cách thay đổi URL trong ajax, chúng ta có thể sử dụng tính năng của anchor trong HTML
ví dụ:
<a href="#php">PHP</a>
khi click vào link có anchor thì browser không load lạii nhưng URL thay đổi http://domain.com/#php <~~ thuận tiện trong ajax
Trong ajax, khi ta click vào link thì hàm ajax sẽ gưi thông tin đến file noidung.php để lấy nội dung tương ứng nhưng trong PHP không thể lấy các giá trị từ anchor (#php) nên ta phải dùng javascript để truyền tham số cho noidung.php
<script>
url = window.location.href; //link hiện tại, ví dụ: http://domain.com/#php
c_url = url.split('#');
id = c_url[1]; //tác url và lấy giá trị phía sau #, tức là php
ajaxLoad('noidung.php?id='+id,'hienthi'); // gửi dữ liệu đến file nội dung
</script>
Đây là code demo:
<html><title>PHP BASIC - AJAX SIMPLE </title>
<body>
<script>
loadstatustext = 'Loading...';
function ajaxLoad(url,id)
{
if (document.getElementById) {
var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
}
if (x)
{
x.onreadystatechange = function()
{
el = document.getElementById(id);
el.innerHTML = loadstatustext;
if (x.readyState == 4 && x.status == 200)
{
el.innerHTML = x.responseText;
}
}
x.open("GET", url, true);
x.send(null);
}
}
</script>
<div id="hienthi">Day la noi dung file can hien thi</div>
<script>
var url = window.location.href;
if(url.indexOf('#')!=-1) c_url = url.split('#');
id = c_url?c_url[1]:'#';
ajaxLoad('noidung.php?id='+id,'hienthi');
</script>
<a href="#1" onClick="ajaxLoad('noidung.php?id=1','hienthi');">1</a> <br>
<a href="#2" onClick="ajaxLoad('noidung.php?id=2','hienthi');">2</a> <br>
<a href="#3" onClick="ajaxLoad('noidung.php?id=3','hienthi');">3</a> <br>
<a href="#4" onClick="ajaxLoad('noidung.php?id=4','hienthi');">4</a> <br>
<a href="#8" onClick="ajaxLoad('noidung.php?id=8','hienthi');">8</a> <br>
<a href="#5" onClick="ajaxLoad('noidung.php?id=5','hienthi');">5</a> <br>
<a href="#6" onClick="ajaxLoad('noidung.php?id=6','hienthi');">6</a> <br>
<a href="#7" onClick="ajaxLoad('noidung.php?id=7','hienthi');">7</a>
</body>
</html>
file noidung.php
<?php
print $_GET['id'];
?>
Chúc thành công!
Tra loi 11 comment(s) 2007-07-09 09:38:11
Phan Ngọc Tú 2008-01-23 05:25:59
Tra loi
TG 2008-01-23 10:02:07
ví dụ:
a = str.split('#');
luc đó a sẽ là 1 array với a[0] = abc và a[1] = 123
hàm indexOf là vị trí của 1 ký tự trong chuỗi và -1 nếu ký tự không tồn tại trong chuỗi
ví dụ:
str.indexOf('k') = -1
Tra loi
Phan Ngọc Tú 2008-01-26 12:05:48
nó chỉ play nhạc khi người dùng click (onclick="") .mình muốn chơi bài hát khi người dùng vào từ link thì sẻ play bài đó vd : http://domain.com/#playId=32
xin chỉ giáo
P/S: hình như cái này sử dụng cái window.location.href
Tra loi
TG 2008-01-26 12:21:38
Tra loi
Phan Ngọc Tú 2008-01-26 12:55:02
mình nói rỏ cái này ..
P/S : TG cho xin cái nick yahoo cái . để tiện hỏi ...Thanks
Tra loi
TG 2008-01-26 01:01:33
TG's YM: xboohb
Tra loi
Phan Ngọc Tú 2008-01-26 01:11:51
Tra loi
TG 2008-01-26 01:54:35
Tra loi
Phan Ngọc Tú 2008-01-27 11:27:34
Tra loi
TTOL 2008-05-14 09:16:24
Chào các bạn đoạn trên hay quá nhưng mình làm vẫn chưa được các bạn giúp mình nhé .
<html><title>PHP BASIC - AJAX SIMPLE </title>
<body>
<script>
loadstatustext = 'Loading...';
function ajaxLoad(url,id)
{
if (document.getElementById) {
var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
}
if (x)
{
x.onreadystatechange = function()
{
el = document.getElementById(id);
el.innerHTML = loadstatustext;
if (x.readyState == 4 && x.status == 200)
{
el.innerHTML = x.responseText;
}
}
x.open("GET", url, true);
x.send(null);
}
}
</script>
<div id="hienthi">Day la noi dung file can hien thi</div>
<script>
var url = window.location.href;
if(url.indexOf('#')!=-1) c_url = url.split('#');
id = c_url?c_url[1]:'#';
ajaxLoad('noidung.php?id='+id,'hienthi');
</script>
<a href="#1" onClick="ajaxLoad('noidung.php?menu=1&id=1','hienthi');">1</a> <br>
<a href="#2" onClick="ajaxLoad('noidung.php?menu=1&id=2','hienthi');">2</a> <br>
<a href="#3" onClick="ajaxLoad('noidung.php?menu=2&id=3','hienthi');">3</a> <br>
<a href="#4" onClick="ajaxLoad('noidung.php?menu=1&id=4','hienthi');">4</a> <br>
<a href="#8" onClick="ajaxLoad('noidung.php?menu=2&id=8','hienthi');">8</a> <br>
<a href="#5" onClick="ajaxLoad('noidung.php?menu=3&id=5','hienthi');">5</a> <br>
<a href="#6" onClick="ajaxLoad('noidung.php?menu=3&id=6','hienthi');">6</a> <br>
<a href="#7" onClick="ajaxLoad('noidung.php?menu=4&id=7','hienthi');">7</a>
</body>
</html>
Mình muốn thêm cái menu vào tuy GET lên trình duyệt được nhưng khi F5 lại thì lại trở về trang chủ ngay chứ ko được như ví dụ hix .
bạn nào vui lòng giúp mình với
file noidung.php
<?php
print $_GET['id'];
?>
Tra loi
gaulucky92 2009-01-27 06:41:13
Mình làm theo + chỉnh sửa tí ===> OK
Demo: http://gaulucky92.12h.us/ajax%20with%20anchor/#view,21
Tra loi
Y kien