2014-09-24 125 views
0

我有一个ASP页面,通过窗体接收来自上一页的数据。ASP - 页面无法加载,直到SendEmail函数已经运行

ASP页:

  1. 连接到数据库
  2. 更新数据库
  3. 加载HTML说你的表已提交
  4. 电子邮件程序发送一个确认。

但是,直到电子邮件例程已经运行,页面才会加载,即使它是最后一个要调用的例程。

这是在子页面底部的电话“SendEmail”程序,被称为HTML载入

</html> 

<% 

Call SendEmail 

Sub SendEmail 

End Sub 
%> 

任何帮助将非常感激之后。

干杯

约翰

+0

当然它不会 - ASP是服务器端,因此您的所有代码都会在将响应发送到客户端之前在服务器上运行。 – Paul 2014-09-24 13:46:11

回答

-1
</html> 

<% 
Response.Flush 'sends buffered HTML output immediately. 
Call SendEmail 

Sub SendEmail 

End Sub 
%> 
+2

如果你稍微解释一下你的代码会很好。 – 2014-09-24 09:38:27

+0

我现在认为它可能比代码更多地处理服务器,因为简单的缓冲区/刷新例程不起作用要么 – 2014-09-24 09:57:36

+0

刷新缓冲区根本无法解决这个问题 - 这完全与期望页面执行。 – Paul 2014-09-24 14:03:41

0

经典ASP,像ASP.NET,PHP等,都是服务器端语言。这意味着填充页面的脚本在响应发送到客户端之前执行。举个例子:

<html> 
    <head></head> 
    <body> 
     <div><h1>This is a test</h1><p>Some random Lorem Ipsum in a box.</p></div> 
     <%Response.Write("This is also a test<br/>")%> 
     <p>Some other gobbledegook.</p> 
     <%Response.Write("37 + 59 = " & (37+59))%> 
     <%SendMail("Whatever message.")%> 
    </body> 
</html> 
<%Response.Write("Something else here.")%> 

所有这些代码好像回到以前的东西将执行服务器端:

这是在一个盒子测试

一些随机的Lorem存有。

这也是考验

其他一些官样文章。

37 + 59 = 96 ...(Sendmail的将在这里执行)... 别的东西在这里。

如果你想部分,以统一运行,那么你就必须考虑使用JavaScript,jQuery的或一些其他类似的基于JavaScript的插件调用它们,或者使用(咳嗽)选择的iframe S(GAH!讨厌!)。