ví dụ em có một trang html thế này
khi nhấn vào nút submit, trình duyệt tự lấy và tự gửi thông tin đi, các anh có thể cho em biết thông tin gửi đi theo fomat nào, và nếu ko có trình duyệt thì mình dùng hàm gì để gửi đến serve ạ(coi như đã có toàn bộ dữ liệu, em chỉ mắc ở chỗ gửi đi thôi), thanks.Code:<html> <body> <form method="POST"> <p style="margin-top: 0; margin-bottom: 0"> Nhập a:<input type="text" name="a" size="20"></p> <p style="margin-top: 0; margin-bottom: 0"> Nhập b:<input type="text" name="b" size="20"></p> <p style="margin-top: 0; margin-bottom: 0"> <input type="submit" value="Tính" name="B1"></p> </form> </body> </html>
Cái này phụ thuộc vào thuộc tính encrypt của form.
Theo w3c thì thuộc tính encrypt:
Theo mặc định, encrypt là application/x-www-form-urlencodedapplication/x-www-form-urlencoded: All characters are encoded before sent (this is default)
multipart/form-data: No characters are encoded. This value is required when you are using forms that have a file upload control
text/plain: Spaces are converted to "+" symbols, but no special characters are encoded
Trong trường hợp này, form của bạn sẽ gửi dữ liệu như sau:
a=valuea&b=valueb\r\n
Nghìn dặm phong ba cách tiếng lòng
Vạn sầu thương nhớ nỗi hư không
Nhìn phương xa ấy, mình ta ngóng
Cố với tay theo một bóng hồng
@tauit: em chưa muốn đi vào lập trình cấp thấp trong winsock, trình độ em mới chỉ đang lở lửng trên lưng wininet thôi, dù sao cũng cám ơn anh.
@puss: cái a=valuea&b=valueb\r\n thì em hiểu rồi, nhưng còn cái "application/x-www-form-urlencoded" có phải là header không anh, thanks.
cám ơn anh,
bây giờ nếu em có đoạn code thế này:
đoạn trên nó đặt tên cho combo box là ctl00$ctl04$cbAcademicUnit, không có dấu ngoặc kép, điều này có hợp lệ ko ?, và nếu hợp lệ, khi submit thông tin gửi đi có phải là ctl00$ctl04$cbAcademicUnit=C không ạ, thanks.Code:<SELECT style="WIDTH: 227px" id=ctl00_ctl04_cbAcademicUnit onchange="javascript:setTimeout('__doPostBack(\'ctl00$ctl04$cbAcademicUnit\',\'\')', 0)" name=ctl00$ctl04$cbAcademicUnit> <OPTION selected value=""> </OPTION> <OPTION value=""></OPTION> <OPTION value = A > AAAA </OPTION> <OPTION value = B > BBBB </OPTION> <OPTION selected value = C > CCCC </OPTION> <OPTION value = D > DDDD </OPTION> <OPTION value = E > EEEE </OPTION> </SELECT>
Theo qui ước của w3c thì giá trị của một attribute như sau:
Reference là một số điều luật khác.Literal data is any quoted string not containing the quotation mark used as a delimiter for that string. Literals are used for specifying the content of internal entities (EntityValue), the values of attributes (AttValue), and external identifiers (SystemLiteral). Note that a SystemLiteral can be parsed without scanning for markup.
AttValue ::= '"' ([^<&"] | Reference)* '"'
Nhìn vào đây bạn có thể thấy dữ liệu của một attribute value cần phải được đặt trong dấu nháy kép. Tuy nhiên đây chỉ là qui ước, hầu hết các trình duyệt hiện nay đều hoạt động mà không cần dấu nháy kép, thậm chí bạn không cần đóng các tag html lại thì trình duyệt vẫn chạy bình thường. Nhưng nếu muốn viết một tài liệu html "well formed" thì cần phải tuân thủ các điều luật này.
Theo qui ước của w3c thì việc đặt giá trị cho thuộc tính name như sau:
Điều này có nghĩa là:An Nmtoken (name token) is any mixture of name characters.
Names and Tokens
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[6] Names ::= Name (S Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (S Nmtoken)*
1. Ký tự đầu tiên phải là một chữ cái, một dấu gạch dưới "_", hoặc hai dấu ":"
2. Các ký tự tiếp theo có thể là: chữ cái, số, dấu chấm ".", gạch dưới "_", dấu hai chấm ":", dấu gạch ngang "-", các ký tự kết hợp, các ký tự mở rộng (unicode)
Quay trở lại câu hỏi của bạn, bạn nên sửa lại là name="ctl00$ctl04$cbAcademicUnit" thì sẽ đạt chuẩn của w3c đề ra. Tuy nhiên điều này là không bắt buộc.
Khi submit, thông tin gửi đi sẽ hơi "biến dạng" một chút ví trong thuộc tính name của bạn có ký tự kết hợp là "$", vì vậy khi submit nó sẽ chuyển ký tự "$" về mã ascii, cụ thể thông tin submit lên host sẽ như sau:
ctl00%24ctl04%24cbAcademicUnit=C
(%24 là mã hex của ký tự $)
Nghìn dặm phong ba cách tiếng lòng
Vạn sầu thương nhớ nỗi hư không
Nhìn phương xa ấy, mình ta ngóng
Cố với tay theo một bóng hồng