我的网站上有一个搜索页面。搜索从外部来源的几个(最终是几个)API 中提取。有时一次搜索最多可能需要 5 秒钟。 因此,我想至少用加载 gif 加载我的搜索页面,并让 AJAX 开始提取数据,一次显示一点。 (类似于 http://gamespot.com 虽然这是一个不好的例子,因为搜索在禁用 JS 的情况下不起作用)
当然,我必须考虑那些关闭了 Javascript 的用户,所以对于他们来说,我只是让 PHP 进行搜索,他们将不得不等待。
实现它的最佳方法是什么?如果我使用 <noscript>
, 那么所有用户仍然需要等待 5 秒的 PHP 部分加载。
我是否可以让搜索表单根据用户的 JS 状态将用户发送到不同的页面?
最佳答案
也许 noscript
部分定义了一个 iframe
来加载长时间 PHP 查询的结果?
Would I just have the search form send the user to different pages depending on their JS status?
如果您让用户访问您的页面,然后发送表单,那绝对是最好的方式。例如:
HTML:
<form id='theForm' action='long_search.php'>
....
JavaScript:
hookEvent(document.getElementById('theForm'), 'submit', function(event) {
event.preventDefault();
loadAjaxSearchResults();
return false;
});
...其中 hookEvent
是使用 addEventListener
或 attachEvent
(在 IE 上)的函数。
题外话:hookEvent
的东西,就像很多这样的东西,如果你使用像 jQuery 这样的库会更容易。 , Prototype , YUI , Closure , 或 any of several others .例如,使用 jQuery:
$("#theForm").submit(function() {
$("#resultsTarget").load("ajaxsearch.php", $(this).serialize());
return false;
});
关于php - 禁用 JavaScript 时的 Ajax 搜索解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053669/