banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Ai đó làm ơn giúp tui về vấn đề trong lập trình ajax  XML
  [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

[Minus]    0    [Plus]
Joined: 02/02/2007 18:06:53
Messages: 9
Offline
[Profile] [PM]
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
}

[Up] [Print Copy]
  [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

[Minus]    0    [Plus]
Joined: 10/12/2006 00:15:41
Messages: 20
Offline
[Profile] [PM]
Sau bác không dùng ngôn ngữ PHP, ASP hay ASPX cho de .................
[Up] [Print Copy]
  [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
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
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ỉ smilie ). 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 smilie
[Up] [Print Copy]
  [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
[Avatar]
hackinggirl
Member

[Minus]    0    [Plus]
Joined: 03/03/2007 23:55:40
Messages: 6
Location: TP.HCM
Offline
[Profile] [PM] [Yahoo!]
như kekhongnha nói, bạn nên sử dụng asp or php. nó mạnh lắm đó ^^
[Up] [Print Copy]
  [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

[Minus]    0    [Plus]
Joined: 02/02/2007 18:06:53
Messages: 9
Offline
[Profile] [PM]

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ỉ smilie ). 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 smilie 


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
[Up] [Print Copy]
  [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
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
Vậy là bạn thật sự chưa get response chứa cả HTML à smilie ?
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 í smilie
[Up] [Print Copy]
  [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

[Minus]    0    [Plus]
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
[Profile] [PM]
Ô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 đó.
[Up] [Print Copy]
  [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
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 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|