Web开发中的关键概念与技术解析
发布时间: 2025-08-17 00:51:43 阅读量: 1 订阅数: 5 

### Web开发中的关键概念与技术解析
#### 1. 表单元素属性与用户输入验证
在Web开发里,表单元素的属性设置和用户输入验证是重要环节。以单选按钮为例,同一组的单选按钮必须有相同的`NAME`值,而`ID`属性可采用`NAME`值加下划线和索引值的约定。示例代码如下:
```html
<input checked type="RADIO" name="fruit" id="fruit_1" value="oranges">
<label for="fruit_1">Oranges</label>
<input type="RADIO" name="fruit" id="fruit_2" value="apples">
<label for="fruit_1">Apples</label>
```
用户输入验证在Web应用中颇具挑战。用户填写表单元素时并不与应用实时交互,而是一次性提交整个表单。虽然可以用客户端JavaScript进行验证,让用户在提交前获得反馈,但这需要额外学习,且因浏览器差异和用户可绕过JavaScript,无法保证提交值有效。
许多网站采用不同URL处理表单提交和渲染,当验证出错时提示用户点击返回按钮修改并重新提交。不过,这种方法存在问题,比如部分用户不会操作返回按钮,返回后验证错误信息不可见,还可能导致表单空白需重新输入数据。
更好的做法是用同一Web Connection方法处理表单渲染和提交。先判断请求是否来自表单提交,可通过检查当前HTTP请求方法是`GET`还是`POST`:
```foxpro
llPosted = Request.ServerVariables( "REQUEST_METHOD") = "POST"
```
同时,设置表单按钮的文本标题变量,确保按钮标题改变时代码仍能正常工作。以下是一个简单表单的验证代码示例:
```foxpro
LOCAL lcCancelCaption, lcCancelURL, lcSubmitCaption, ;
lcValidMsg, llPosted, lcVar1, lcVar2
llPosted = Request.ServerVariables( "REQUEST_METHOD") = "POST"
lcCancelCaption = 'Cancel'
lcSubmitCaption = 'Search'
lcCancelURL = 'wc.dll?myapp~HomePage'
lcValidMsg = ''
IF NOT m.llPosted
* Not submitted yet, create default form element values:
lcVar1 = ''
lcVar2 = ''
ELSE && form submitted
IF Request.Form( 'cmdsubmit') = m.lcCancelCaption
Response.Redirect( m.lcCancelURL)
RETURN .F.
ENDIF
* OK. Read form vars:
lcVar1 = Request.Form( 'var1')
lcVar2 = Request.Form( 'var2')
* Validate:
IF EMPTY( m.lcVar1)
lcValidMsg = m.lcValidMsg + 'Var 1 cannot be empty.<BR>'
ENDIF
IF EMPTY( m.lcVar2)
lcValidMsg = m.lcValidMsg + 'Var 2 cannot be empty.<BR>'
ENDIF
IF EMPTY( m.lcValidMsg) && Everything checked out!
* Do whatever the intention of the form is, then
* display some result, such as:
Response.ExpandTemplate( "ResultPage.wc")
RETURN .F. && no further processing needed
ENDIF
ENDIF
* Now render the form:
WITH Response
IF NOT EMPTY( m.lcValidMsg) && problems were noted
.Write( [<P ALIGN=CENTER><FONT COLOR="red"><B>] + ;
[Validation Problems Encountered!</B><BR>] + ;
m.lcValidMsg + [</FONT></P>] )
ENDIF
* Display the form:
.Write( [<form method=post>] )
.Write( [Search Item 1: <input type="TEXT" name="var1" value="] + ;
m.lcVar1 + [" SIZE=20><BR>] )
.Write( [Search Item 2: <input type="TEXT" name="var2" value="] + ;
m.lcVar2 + [" size=20><br>] )
.Write( [<input type="SUBMIT" name="cmdSubmit" value='] + ;
m.lcSubmitCaption + ['> ])
.Write( [<input type="submit" name="cmdSubmit" value='] + ;
m.lcCancelCaption + ['> ])
.Write( [</form>] )
ENDWITH
```
这种流程控制在Web Connection应用中效果良好。先判断表单是首次显示还是正在提交,若未提交则创建表单元素的空白值并渲染表单;若正在提交,则读取表单变量值并检查验证规则,规则违反会将错误信息添加到`lcValidMsg`变量。若该变量为空,提交有效可继续处理;若有验证问题,显示错误信息并重新渲染表单,用户可根据错误信息修改并重新提交,无需使用返回和前进按钮。
#### 2. 特定Visual FoxPro数据类型的验证技巧
HTML表单的文本框基于字符。若表单包含表示其他数据类型字段的文本框,无法让客户端浏览器理解并限制键盘输入。以下是使用HTML表单文本框的一些技巧:
- **数值输入**:渲染用于输入数值的文本框时,需用Visual FoxPro的`TRANSFORM()`函数将初始值转换为字符串嵌
0
0
相关推荐










