DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hfh9801
今日帖子: 0
在线用户: 11
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/7 21:42:33
标题:
IntraWeb  怎么获取第一次URL 传递的变量 浏览:2621
加入我的收藏
楼主: 最近用 IntraWeb  做了个小工具,

一个设备 点检、报修的 东西。
1、在设备标牌上 激光打印一个 含编号的 二维码的 URL,
  用手机扫描连接到 web 页面进行操作( 点检 或者 报修 )。
  
  form1 页面。


2、维保人员工作牌也带一个 含工号的 二维码的 URL,
 用手机扫描连接到 web 页面进行操作( 维修 、保养 )。
 
  form2 页面。


3、基层人员 工作牌也带一个 含工号的 二维码的 URL,
 用手机扫描连接到 web 页面进行操作查询(目前单位设备的运作、点检、维修 、保养 的进度 )。

  form3 页面。

4、 form0  首页 。



问题是 二维码的 URL 的变量 不能第一次 就识别 传递到需要页面内,

  需要重复第二次才行。




ServerController 【单元】
procedure TIWServerController.IWServerControllerBaseConfig(Sender: TObject);
begin
 // THandlers.Add('.z', '.ss', TContentForm.Create(TIWForm3));  //基层管理员
  THandlers.Add('', 'a', TContentForm.Create(TIWForm1));        //设备操作员
  THandlers.AddForExtension('.p', TContentForm.Create(TIWForm2)); // 维保人员
  THandlers.AddStartHandler('', 'b.h', TContentForm.Create(TIWForm0)); //TIWForm0 设为首页

end;


=========
参数传递
form1  -form3 单元
procedure TIWForm1.IWAppFormURLRequest(aSender: TIWAppForm;
  aRequest: THttpRequest);
  var s, id:string;
  i:Integer;
  begin
   ID:= aRequest.QueryFields.Values['ID']; //ID第一次无法传递?
   IWE1.Text := id;
  ...... 
  各form id数据处理 
 ......

 end;
----------------------------------------------
-
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/7 21:45:19
1楼: URL :   HTTP://XXX.XXX.XXX.XXX/1.p?id=12123

id 数据传递。

无法识别 1.p 
直接到 首页。
----------------------------------------------
-
作者:
男 xuyb19870303 (xuy) ▲▲▲△△ -
普通会员
2016/9/9 12:04:41
2楼: 很简单,看你的需求,不要用form,直接从TContentBase继承,将接收到的数据处理之后根据情况跳转页面或者直接输出要返回的string。

如果要直接跳转到某一页的话用 RequiresSessionStart := False; 即可。

initialization
  with THandlers.Add('', 'login.php', TLoginChk.Create) do
  begin
    CanStartSession := True;
    RequiresSessionStart := False;
  end;
----------------------------------------------
-
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/9 17:00:44
3楼: 这个需要在 那个文件 进行继承。



IW 没有帮助, 没有列子。没有源码,摸索太难。
半路出家,电气行业,搞这个想规范维修和统计方便点。
----------------------------------------------
-
作者:
男 xuyb19870303 (xuy) ▲▲▲△△ -
普通会员
2016/9/9 17:46:52
4楼: 盒子置顶文章“Intraweb之EasyUI篇”里面有,可以照着弄下,还有就是加上我发你的那代码就行了。

最主要的是这句RequiresSessionStart := False;
----------------------------------------------
-
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/10 10:03:05
5楼: 看了 Intraweb之EasyUI篇  delphi的代码好少。
也没有看到   RequiresSessionStart 这个变量。在那个单元,

按 万一 的 
使用 IntraWeb (39) - THttpRequest、THttpReply

也只是在第二次扫描后才可以 获取id。

 我前面也是 在 第二次 扫描后 获取 id
 

请能 直接 给个 完整的代码段。

另外 Intraweb之EasyUI篇
 需要大量 web 编程支持, 不用 form ,对我来说比较晕,
主要是目前只对delphi 、vbA  有点认识而已。
会用form 能写点小工具,帮自己统计下施工材料,输出报表,
工作工时记录等 小工具。

目前就想把再用 form 小工具, 的直接转到 web,要工人用手机填报
任务,领用材料,不用在手工写材料单,

  因为我的主要业是电气设计,施工管理 及安全防范工作,
已经过了不惑之年,没有太大的精力去从头看 web, (html,php asp)之类的。
毕竟主业是 电气及安全, 这个出问题要 人身财产损失伤害,
----------------------------------------------
-
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/10 22:39:46
6楼: unit MyXml;
interface
uses Classes, IW.Content.Base, HTTPApp, IWApplication, IW.HTTP.Request, IW.HTTP.Reply;
type
  TContentXML = class(TContentBase)
  protected
    function Execute(aRequest: THttpRequest; aReply: THttpReply; const aPathname: string; aSession: TIWApplication; aParams: TStrings): Boolean; override;
  public
    constructor Create; override;
  end;

implementation
uses IW.Content.Handlers, IWMimeTypes;
constructor TContentXML.Create;
begin
  inherited;
  mFileMustExist := False;
end;

function TContentXML.Execute(aRequest: THttpRequest; aReply: THttpReply; const aPathname: string; aSession: TIWApplication; aParams: TStrings): Boolean;
var id:string; ///// 我自己增加的
begin
  aReply.ContentType := MIME_HTML;        //========
  id:= ARequest.QueryFields.Values['ID']; //=========
  aReply.WriteString('id = *' + id + '*');//=========

  Result := True;
{
  if Assigned(aReply) then
  begin
    aReply.ContentType := MIME_XML;
    aReply.WriteString('<xml>My xml content here</xml>');
  end;
}
end;

end.

{ServerController 单元的部分相关代码: ----------}
uses
  IWInit, IWGlobal, IW.Content.Handlers, MyXml;

{IWServerControllerBase.OnConfig 事件}
procedure TIWServerController.IWServerControllerBaseConfig(Sender: TObject);
begin
  THandlers.Add('', 'XmlTest', TContentXML.Create);
end;

{Unit1 单元的部分相关代码: ----------}
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  WebApplication.GoToURL('XmlTest');
end;
**********8
按 万一 和 xuyb19870303方法  
 实现 第一次url 提交就获取了 传递的 id ,问题在怎么传递到指定 的form窗体呢?
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2016/9/11 7:19:15
7楼: 条码其实等同键盘。楼主要在程序外经条码开启程序,那就关乎浏览器的控制。而且服务器位置变动,所有条码都要重新编印。这做法实在...
何不先在程式 main form 中锁定一个 edit ,让条码每次都在此输入判断性讯息?
----------------------------------------------
-
作者:
男 xhl (xhl) ★☆☆☆☆ -
盒子活跃会员
2016/9/11 8:20:22
8楼: 条码 只是让工人快速接入 web 并自动填写当前的材料编号。

留有人工输入ID 的功能。手机输入太慢了,用扫描的快。

材料盘底,扫描要快多了。

这个也是没办法的。
维修多个地方的人,一些材料名称有不同的叫法,他领用的,用电话给你汇报。
你半会多不知道到底用了什么。

比如 小变压器电源:火牛、 电源、电源适配器 到地是什么你要去仓库查,干重复无效的事。

我刚工作那会,仓库管理: 7个保管,1个计划,2个采购。盘底人多,不觉得
现在就 一个文秘 兼职 保管、计划。
采购该 供应商送货上门了。
都没人了,我也是 经常被抓差 盘底 ,才想到这个方法。
----------------------------------------------
-
作者:
男 xuyb19870303 (xuy) ▲▲▲△△ -
普通会员
2016/9/11 10:23:28
9楼: 我晕,代码都发给你了,竟然还是云里雾里。我写你的代码已经很清楚了:


initialization
  with THandlers.Add('', 'login.php', TLoginChk.Create) do
  begin
    CanStartSession := True;
    RequiresSessionStart := False;
  end;

initialization加在你的单元  MyXml 底部,end 之前,IWServerControllerBaseConfig事件中不要任何代码(某人的书里面也没有提到这个)。

TContentXML.Execute事件中用aParams.Values['id']就能获取你二维码传过来的id,对这个处理之后用aSession.gotourl就能跳转到你需要的页面,你的页面用form也好,html自己写也好,没人管你。

如果要给form传数据,最简单就是用session,当然还有另外一种方法,但估计这个不适合你。

如果说还不会的话,看来你得出钱请人帮你弄这个了。。。
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2016/9/11 14:51:34
10楼: 那简单。楼主用 Parameters 吧。http://www.atozed.com/intraweb/docs/Deploy/Launching.aspx
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2016/9/11 15:02:18
11楼: http://grandruru.blogspot.hk/2016/06/intraweb-parameters.html
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2016/9/11 15:03:01
12楼: http://docs.atozed.com/docs.dll/getting%20started/User%20Session%20Overview.html
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.00183毫秒 RSS