2

我的网站上有一个搜索页面。搜索从外部来源的几个(最终是几个)API 中提取。有时搜索可能需要长达 5 秒的时间。正因为如此,我想至少用加载 gif 加载我的搜索页面,并让 AJAX 开始拉数据,一次显示一点。(类似于http://gamespot.com虽然这是一个不好的例子,因为在禁用 JS 的情况下搜索不起作用)

当然,我必须考虑关闭了 Javascript 的用户,所以对于他们来说,我只会让 PHP 进行搜索,他们将不得不忍受等待。

实现这一点的最佳方法是什么?如果我使用<noscript>,那么所有用户仍然必须等待 5 秒 PHP 部分加载。

我是否可以让搜索表单根据用户的 JS 状态将其发送到不同的页面?

4

4 回答 4

1

也许该noscript部分定义了一个iframe加载长期 PHP 查询的结果?

我是否可以让搜索表单根据用户的 JS 状态将其发送到不同的页面?

如果您有用户来到您的页面,然后发送表单,那绝对是最好的方法。例如:

HTML:

<form id='theForm' action='long_search.php'>
....

JavaScript:

hookEvent(document.getElementById('theForm'), 'submit', function(event) {
    event.preventDefault();
    loadAjaxSearchResults();
    return false;
});

... wherehookEvent是一个使用addEventListeneror的函数attachEvent(在 IE 上)。


题外话hookEvent事情,就像很多这样的东西,如果你使用像jQueryPrototypeYUICl​​osure其他几个库这样的库会更容易。例如,使用 jQuery:

$("#theForm").submit(function() {
    $("#resultsTarget").load("ajaxsearch.php", $(this).serialize());
    return false;
});
于 2011-02-19T21:34:46.843 回答
0

渐进增强:

首先构建它,以便 PHP 版本可以正常工作。这是所有人都可以访问的。然后,添加 javascript,如果可用,它会在后台执行 ajax 请求以获取内容并更新当前页面。

将这本书视为有关该主题的简单而出色的读物: Bullet Proof Ajax

于 2011-02-19T21:40:04.750 回答
0

如果没有 JavaScript,您将需要将数据发布到服务器并在页面上执行完整的回发(刷新)。就像过去的美好时光一样。;)

于 2011-02-19T21:35:14.520 回答
0

不,您将 js 代码(如果我理解正确,则自动完成?)应用到输入字段。把 Javascript 想象成一个扩展器。如果 js 被禁用,则不会在输入字段上扩展自动完成功能。你可以放一些文字,你说,伙计,打开 js,否则这将是一个很长的搜索。如果js打开,隐藏文本

于 2011-02-19T21:35:18.457 回答