这是我的问题。我正在开发一个网站,允许用户预订世界各地的酒店,就像 booking.com、expedia.com 等。
当用户搜索某个城市的酒店时,我通过 Web Services 与不同的提供商连接,然后显示结果。在几乎每个提供商中,这意味着:
1) 在 WS 中调用一个方法,返回所选日期城市中的可用酒店。对于这些酒店中的每一个:
- 2) 从一个非常大的 XML 文件(通常超过 1 个)中读取,以获取地址、电话、传真、描述、服务等静态信息。
- 3) 在 WS 中调用第二种方法来获取可用的房间信息。
- 4) 显示结果
我遇到的问题与页面加载时间有关,这是这些网站的一个关键因素。
第一次调用 WS(第 1 点),这是必要的,我无能为力,所以这次我必须接受。另外两点也是必要的,但我的目的是通过在加载时显示酒店来改善用户体验。
假设您正在寻找布宜诺斯艾利斯的酒店。您输入“布宜诺斯艾利斯”作为您的目的地,然后点击“Buscar”按钮。您可能会注意到,在完全加载下一个页面之前,会显示一条加载消息。而不是等待所有酒店加载,我想做的,我认为会改善用户体验的是:
- 当用户点击“Buscar”按钮时,立即将用户发送到 HotelList 页面
- 显示每家酒店的信息,并在顶部显示一条消息,如“正在加载 1 家 XXX 家酒店”……“正在加载 2 家 XXX 家酒店”……
我一直在寻找描述如何实现这一点的 ajax 示例,但没有找到任何明确的文章。我真的很感激有人能指出我正确的方向。
谢谢!
-------------------------------------------------- -------------------------
尝试使用多线程,但未显示结果。我正在使用文字控件显示结果。这是一段代码:
酒店列表.aspx
<asp:Literal ID="HotelesResultadoBusqueda" runat="server"></asp:Literal>
HotelList.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
...
...
ThreadStart job = new ThreadStart(CargarHoteles);
Thread thread = new Thread(job);
thread.Start();
}
private void CargarHoteles()
{
// Load Hotels
ArrayList hotels = WebService......
foreach(Hotel hotel in hotels)
{.....}
....
this.HotelesResultadoBusqueda.Text = "...";
}