[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
04/03/2007 08:52:20 (+0700) | #1 | 44429 |
silenthat
Member
|
0 |
|
|
Joined: 02/02/2007 18:06:53
Messages: 9
Offline
|
|
Tui đang làm một trang web hiện biẻu đồ thống kê về các vụ tai nạn giao thông wa các năm bằng công nghệ ajax. Dữ liệu thống kê dược lưu trên server
Khi người dùng click vào liên kết hiển thị 1 năm thì show ra biểu đồ thống kê về các vụ tai nạn(về các loại đường thuỷ, bộ, ... ) trong năm đó. Cụ thể hoạt động như sau: Khi user click trên link thì 1 Request được gởi về server, server sẽ đọc dữ liệu thống kê về năm đó và gởi trả kết quả về cho client, hồi đáp này là 1 string (tui dùng thuộc tính responseText) dạng "156 78 59 123 ..." là các số liệu thống kê. Phía client sẽ tách các số liệu này ra và dùng câu lệnh document.write("<input...>...</input>") để vẽ các cột của biểu đồ với chiều cao tương ứng với số liệu
Thế nhưng tui gặp vấn đề khi muốn gán giá trị của responseText vào 1 biến toàn cục của Javascript để thực hiện việc tách chuỗi. Dùng câu lệnh document.write(...) để vẽ biểu đồ trong hàm StateChanged cũng không được vì nó chỉ vẽ 1 cột trong biểu đồ thôi.
Ai đó làm ơn giúp tui với
Đây là đoạn mã trong file javascript
// JScript File
var
xmlHttp
var ar = new Array()
var s = "2 7 4 6 9 3 8 0 1 5"
function
drawChart(arr)
{
var
i
for
( i=0; i<10; i++ )
document.write(arr[i])
var w=2
var h=250
for
( i=0; i<10; i++ )
{
var l=100 + i*w*2
h=arr[i]
document.write(
'<input id="'+i+'" type="label" value="'+ar[i]+'" style=" width:'+w+'px; height:'+h+'px; Z-INDEX: 101; LEFT: '+l+'px; POSITION: absolute; TOP: 50px""/>') //value="'+ar[i]+'"
}
}
function
getData(sYear)
{
xmlHttp=GetXmlHttpObject()
if
(xmlHttp==null)
{
alert (
"Browser does not support HTTP Request")
return
}
var
url="Default2.aspx"
url=url+
"?y="+sYear
xmlHttp.onreadystatechange = stateChanged
xmlHttp.open(
"GET",url,true)
xmlHttp.send(
null)
arr = s.split(
" ")
drawChart(arr)
}
function
stateChanged()
{
if
(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById(
"id").innerHTML=xmlHttp.responseText //div tab
s = xmlHttp.responseText
}
}
function
GetXmlHttpObject()
{
var
objXMLHttp=null
if
(window.XMLHttpRequest)
{
objXMLHttp=
new XMLHttpRequest()
}
else
if (window.ActiveXObject)
{
objXMLHttp=
new ActiveXObject("Microsoft.XMLHTTP")
}
return
objXMLHttp
}
|
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
05/03/2007 11:07:03 (+0700) | #2 | 44683 |
kekhongnha1985
Member
|
0 |
|
|
Joined: 10/12/2006 00:15:41
Messages: 20
Offline
|
|
Sau bác không dùng ngôn ngữ PHP, ASP hay ASPX cho de ................. |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
05/03/2007 13:56:15 (+0700) | #3 | 44717 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Mình chưa đọc kỹ đoạn code của bạn, nhưng nói chung là cách thức gọi AJAX tạm ổn, bạn nói là bạn gặp vấn đề trong việc gán giá trị cho biến toàn cục s có phải ko? JS thì mình không rành lắm, cũng chưa từng thử gán biến toàn cục trong 1 function "con" như vậy, chỉ có điều mình thấy cách giải quyết vấn đề của bạn không được hay cho lắm. Bạn nên nhớ là JS chạy trên client, nên theo mình nghĩ càng giảm nhẹ việc xử lý bằng JS càng tốt. Tại sao bạn không để việc vẽ chart trên server, khi nhận response về, bạn chỉ việc show nó ra, như vậy bạn chủ động hơn trong việc vẽ chart ("vẽ" bằng JS mình nghĩ chắc là khó hơn HTML nhỉ ). Có nghĩa là trong file Default2.aspx, sau khi nhận về param y, nó không chỉ đơn thuần là select data rồi trả về bằng 1 string, mà bạn sẽ tiếp tục việc vẽ chart. Sau đó ở client, bạn chỉ cần get responseText rồi gán vào chỗ cần thiết. Hy vọng sẽ giúp bạn được phần nào |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
06/03/2007 08:45:06 (+0700) | #4 | 44916 |
|
hackinggirl
Member
|
0 |
|
|
Joined: 03/03/2007 23:55:40
Messages: 6
Location: TP.HCM
Offline
|
|
như kekhongnha nói, bạn nên sử dụng asp or php. nó mạnh lắm đó ^^ |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
06/03/2007 10:55:15 (+0700) | #5 | 44938 |
silenthat
Member
|
0 |
|
|
Joined: 02/02/2007 18:06:53
Messages: 9
Offline
|
|
Siêu trộm wrote:
Mình chưa đọc kỹ đoạn code của bạn, nhưng nói chung là cách thức gọi AJAX tạm ổn, bạn nói là bạn gặp vấn đề trong việc gán giá trị cho biến toàn cục s có phải ko? JS thì mình không rành lắm, cũng chưa từng thử gán biến toàn cục trong 1 function "con" như vậy, chỉ có điều mình thấy cách giải quyết vấn đề của bạn không được hay cho lắm. Bạn nên nhớ là JS chạy trên client, nên theo mình nghĩ càng giảm nhẹ việc xử lý bằng JS càng tốt. Tại sao bạn không để việc vẽ chart trên server, khi nhận response về, bạn chỉ việc show nó ra, như vậy bạn chủ động hơn trong việc vẽ chart ("vẽ" bằng JS mình nghĩ chắc là khó hơn HTML nhỉ ). Có nghĩa là trong file Default2.aspx, sau khi nhận về param y, nó không chỉ đơn thuần là select data rồi trả về bằng 1 string, mà bạn sẽ tiếp tục việc vẽ chart. Sau đó ở client, bạn chỉ cần get responseText rồi gán vào chỗ cần thiết. Hy vọng sẽ giúp bạn được phần nào
Có phải ý bạn nói là vẽ chart phía bên server-side bằng aspx hay php, hay... rồi sau đó truyền cả cái chart đó về client-side.
Hic, bạn làm cảm thấy hồ đồ mất rồi, mình thực sự ko hiểu ý bạn muốn nói gì nữa bởi vì giá trị reponse từ server chỉ có 2 dạng là string và xml format thôi mà.
Bạn có thể nói rõ hơn nữa được không, nếu được bạn nói cụ thể cách giải quyết giùm mình.
Cảm ơn các bạn nhiều |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
06/03/2007 12:44:10 (+0700) | #6 | 44963 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Vậy là bạn thật sự chưa get response chứa cả HTML à ?
Mình thấy đa số các website đều dùng theo kiểu này, tức là phần hiển thị họ sẽ xử lý ở server luôn, còn phần AJAX chỉ đơn giản là send request, nhận về và show tất tần tật (y chang) cái response mà nó nhận được, ko nên để phần hiển thị ở client nữa vì nó vừa làm chậm quá trình show website, vừa làm cho client tốn tài nguyên.
Cách giải quyết thì như mình đã nói ở trên, trong file Default2.aspx, bạn nhận request trong đó có chứa param y (year), sau khi select data từ DB, bạn xuất thẳng cái chart giống như xuất ra browser bình thường vậy thôi, phần get response thì bạn vẫn làm như trên, sau khi get response thì bạn gán nó vào innerHTML của object nào mà bạn muốn hiển thị trên client í |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
06/03/2007 16:46:22 (+0700) | #7 | 44997 |
114v
Member
|
0 |
|
|
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
|
|
Ôi trời, xu hướng web hiện nay là giảm tải bớt cho server, nên mới sinh ra cái AJAX, vậy mà các bác lại bàn lùi. Cái vẽ biểu đồ đường thẳng thì javascript hoàn toàn làm được, nên cứ cho nó sử lý ở client chứ server chi cho nặng server!
@silenthat: Nhìn cái code em hết muốn đọc, gì mà lộn tứ tung hết, sao bác không bỏ vào thẻ [code] cho dễ đọc. Biến toàn cục khai báo như vậy là ổn, nếu muốn chắc hơn thì bỏ cái var đi. Nhưng chắc vấn đề nằm ở chỗ ghép chuổi có kèm biến trong đó. |
|
|
|
|
[Question] Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax |
06/03/2007 23:28:51 (+0700) | #8 | 45014 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Hì, ko có ý kiến ^_^
Bạn cứ thử tìm giùm mình cái website nào thảy tất cả phần xử lý đồ họa về phía client đc ko ^_^? Nếu bạn thấy vẽ chart bằng JS dễ hơn bằng HTML thì bạn cứ thử mà xem.
Theo mình thì AJAX lại là giúp giảm nhẹ cho client đấy, nó chỉ cần load phần nào cần cập nhật chứ ko phải load nguyên cả trang web. |
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|