首先看代码
var
Form2: TForm2;
xmlHttp:OleVariant; procedure asyn(); implementation
uses ComObj; {$R *.dfm}
{有了要连接的 URL 后就可以配置请求了。可以用 XMLHttpRequest 对象的 open() 方法来完成。该方法有五个参数: request-type:发送请求的类型。典型的值是 GET 或 POST,但也可以发送 HEAD 请求。
url:要连接的 URL。
asynch:如果希望使用异步连接则为 true,否则为 false。该参数是可选的,默认为 true。
username:如果需要身份验证,则可以在此指定用户名。该可选参数没有默认值。
password:如果需要身份验证,则可以在此指定口令。该可选参数没有默认值。}
procedure TForm2.btn1Click(Sender: TObject);
begin xmlHttp.open('GET','http://www.163.com',false);
// xmlhttp.onreadystatechange:=asyn; xmlHttp.send(null);
if xmlHttp.status=200 then
mmo1.Text:=xmlHttp.responsetext
else
if xmlHttp.status=404 then
ShowMessage('page not exists');
end; procedure TForm2.FormCreate(Sender: TObject);
begin
try
xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
except
try
xmlHttp:=CreateOleObject('Microsoft.XMLHTTP');
except
ShowMessage('can''t create ajax');
end;
end;
end;
{
Ajax 应用程序中需要了解五种就绪状态: 0:请求没有发出(在调用 open() 之前)。
1:请求已经建立但还没有发出(调用 send() 之前)。
2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
4:响应已完成,可以访问服务器响应并使用它。
}
{
因此除了就绪状态外,还需要检查 HTTP 状态。我们期望的状态码是 200,
它表示一切顺利。如果就绪状态是 4 而且状态码是 200,就可以处理服务器的数据了,
而且这些数据应该就是要求的数据(而不是错误或者其他有问题的信息)。
因此还要在回调方法中增加状态检查
}
procedure asyn();
begin
case xmlHttp.readyState of
2:Form2.Caption:='请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。';
3:Form2.Caption:='请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。';
4:
..........这里我用的同步 没有问题
如果把这里
xmlHttp.open('GET','http://www.163.com',false);
// xmlhttp.onreadystatechange:=asyn; xmlHttp.send(null);
if xmlHttp.status=200 then
mmo1.Text:=xmlHttp.responsetext
else
if xmlHttp.status=404 then
ShowMessage('page not exists'); 修改成
xmlHttp.open('GET','http://www.163.com',false);
xmlhttp.onreadystatechange:=asyn;
就报 非选择性参数。
上面的代码 如果用js是正确的。
我想问下 这是不是因为js 回调 函数和 delphi的回调函数不一样?
如果要实现异步 怎么办?我这里指 用 delphi实现 而不是 js。js我也会。
谢谢各位。
var
Form2: TForm2;
xmlHttp:OleVariant; procedure asyn(); implementation
uses ComObj; {$R *.dfm}
{有了要连接的 URL 后就可以配置请求了。可以用 XMLHttpRequest 对象的 open() 方法来完成。该方法有五个参数: request-type:发送请求的类型。典型的值是 GET 或 POST,但也可以发送 HEAD 请求。
url:要连接的 URL。
asynch:如果希望使用异步连接则为 true,否则为 false。该参数是可选的,默认为 true。
username:如果需要身份验证,则可以在此指定用户名。该可选参数没有默认值。
password:如果需要身份验证,则可以在此指定口令。该可选参数没有默认值。}
procedure TForm2.btn1Click(Sender: TObject);
begin xmlHttp.open('GET','http://www.163.com',false);
// xmlhttp.onreadystatechange:=asyn; xmlHttp.send(null);
if xmlHttp.status=200 then
mmo1.Text:=xmlHttp.responsetext
else
if xmlHttp.status=404 then
ShowMessage('page not exists');
end; procedure TForm2.FormCreate(Sender: TObject);
begin
try
xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
except
try
xmlHttp:=CreateOleObject('Microsoft.XMLHTTP');
except
ShowMessage('can''t create ajax');
end;
end;
end;
{
Ajax 应用程序中需要了解五种就绪状态: 0:请求没有发出(在调用 open() 之前)。
1:请求已经建立但还没有发出(调用 send() 之前)。
2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
4:响应已完成,可以访问服务器响应并使用它。
}
{
因此除了就绪状态外,还需要检查 HTTP 状态。我们期望的状态码是 200,
它表示一切顺利。如果就绪状态是 4 而且状态码是 200,就可以处理服务器的数据了,
而且这些数据应该就是要求的数据(而不是错误或者其他有问题的信息)。
因此还要在回调方法中增加状态检查
}
procedure asyn();
begin
case xmlHttp.readyState of
2:Form2.Caption:='请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。';
3:Form2.Caption:='请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。';
4:
..........这里我用的同步 没有问题
如果把这里
xmlHttp.open('GET','http://www.163.com',false);
// xmlhttp.onreadystatechange:=asyn; xmlHttp.send(null);
if xmlHttp.status=200 then
mmo1.Text:=xmlHttp.responsetext
else
if xmlHttp.status=404 then
ShowMessage('page not exists'); 修改成
xmlHttp.open('GET','http://www.163.com',false);
xmlhttp.onreadystatechange:=asyn;
就报 非选择性参数。
上面的代码 如果用js是正确的。
我想问下 这是不是因为js 回调 函数和 delphi的回调函数不一样?
如果要实现异步 怎么办?我这里指 用 delphi实现 而不是 js。js我也会。
谢谢各位。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货