CGI程序遇到的问题(200分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
ParamsList: TParamsList;
begin
begin
ParamsList := TParamsList.Create;
try try
ParamsList.AddParameters(Request.ContentFields);
GLTable.Open;
GLTable.Insert;
GLTable.FieldByName('HomeUrl').Value := ParamsList['HomeUrl'];
GLTable.FieldByName('Content').Value := ParamsList['Content'];
GLTable.FieldByName('Posttime').Value := Now;
GLTable.Post;
except
....................

其中,TParamsList类的AddParameters方法如下:
var
i: Integer;
begin
for i := 0 to Strings.Count - 1 do
begin
with Add do
try
AssignParameter(Strings);
except
Free ;
raise ;
end ;
end;

问题:
如下网页提交数据的时候,TEXTAREA 中的数据不能被提交(input的可以)

<form method="post" action="../myWebServer.exe/form" >
<P>
<LABLE for "HomePage" > 资源共享网站首页地址:</LABLE>
<INPUT type= "text" name="HomeUrl" id= "HomePage"><BR>
<Lable > 共享内容简介</LABLE>
<TEXTAREA wrap=logical name="content" ROWS=6 COLS=60 value="This is a test"Swansea, IL></TEXTAREA><BR>
<tr>
<th><input type="submit" name="pushbutton" value="Submit"></th>
<th><input type="reset" name="resetButton" value=" Clear "></th>
</P>
</form>
 
name="content" 换个名字!
 
等等,我看看再告诉你
 
叫Content是没有问题的。
我估计是你的TParamsList类有一些问题。
有出错的提示么?
 
换成name="YourContent" 仍然提交不上去。

GLTable.FieldByName('Content').Value := ParamsList['Content'];
这句的右边换成常量可以的。

问题出在ParamList['Content']不能得到TextArea的内容
 
2 憔悴,
无错误内容提示。
ParamsList.AddParameters(Request.ContentFields);这句可能是问题根源所在。
对CGI程序的跟踪有经验么?



 
就老老实实这样吧:
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
//var
//ParamsList: TParamsList;
begin
try
GLTable.Open;
GLTable.Insert;
GLTable.FieldByName('HomeUrl').Value := Request.ContentFields.Values['homeurl'];
GLTable.FieldByName('Content').Value := Request.ContentFields.Values['content'];
GLTable.FieldByName('Posttime').Value := Now;
GLTable.Post;
Response.Content:='ok';
except
on e:Exception do begin
Response.Content:=e.Message;
end;
end;
end;
我试了,能行。
 
我的跟踪经验是很土的,呵呵。
先总体Try Except
估计是那一句的问题了,再Response.Content:=估计要出错的的变量的值;exit;
不过一般而言都能找到问题所在。
我一直就在用Delphi做这些的开发。觉得这样习惯了。
不过李维在他的书中提到了一个工具,好像叫什么Bob的,
可以跟踪CGI程序并设置断点,我用了觉得很麻烦。就没有用。
 
呵呵,多谢cHengyAng兄和憔兄(大憔还是小憔?[:)])
 
多人接受答案了。
 
急切呼叫憔悴,email是什么?
 
哦,我的Email是moon_photic@21cn.com
 
后退
顶部