我正在尝试构建一个搜索页面,用户将文本输入搜索框,然后根据搜索生成页面。我有时间问题,因为在JS尝试编辑页面上的值后,空白搜索页面正在加载。
$.ajax({
type: 'GET',
url: '/index.php/content/generate_search',
data: {
search: input.val()
},
beforeSend: function() {
window.location.href = '/index.php/content/search';
},
success: function() {
$('.hero h1').text(input.val());
}
});
答案 0 :(得分:2)
要检查DOM是否已完全加载,必须在考虑所有浏览器的情况下完成许多步骤。 (我在jQuery源代码中找不到实现,但我会回来一个链接)。
最简单也可能是最好的方法,因为你已经在使用jQuery了:
$( function() {
// your code here
} );
是
的简写$( document ).ready( function() {
// your code here
} );
修改强>
好的,正如我所承诺的,我回来了document.ready
的实施。你可以在这里找到它,在GitHub上。 Here是指向当前版本文件的永久链接。
答案 1 :(得分:1)
试试这个:
$(document).ready(function(){
//Your code
});
答案 2 :(得分:0)
onload用于在pageload上执行代码
window.onload = function() {
// your code
};
答案 3 :(得分:0)
此代码:
<?php $arrResultant = array(); foreach($arr as $intKey=>$arrData){ $stripped = preg_replace("#^\/#", "", $arrData['cats']); $arrParts = preg_split("#\/#", $stripped); $intCat1 = isset($arrParts[0])? $arrParts[0]:null; $intCat2 = isset($arrParts[1])? $arrParts[1]:null; if(!array_key_exists($intCat1, $arrResultant)){ $arrResultant[$intCat1] = array(); if( stristr($arrData["cats"], $intCat1) ){ $arrResultant[$intCat1][] = $arrData; } }else{ if( stristr( $arrData["cats"], $intCat1) ){ $arrResultant[$intCat1][] = $arrData; } } if(!array_key_exists($intCat2, $arrResultant) && !is_null($intCat2)){ $arrResultant[$intCat2] = array(); if( stristr($arrData["cats"], $intCat2) ){ $arrResultant[$intCat2][] = $arrData; } }else{ if( stristr( $arrData["cats"], $intCat2) ){ $arrResultant[$intCat2][] = $arrData; } } } var_dump($arrResultant);
...导致浏览器在发送Ajax请求之前离开页面并加载新的。
因此,Ajax请求被取消。如果没有,则没有JavaScript等待接收响应。
如果要访问beforeSend: function() {
window.location.href = "/index.php/content/search";
},
然后启动Ajax请求,则启动Ajax请求的JavaScript必须位于/index.php/content/search
。您刚离开的页面无法在下一页运行JavaScript。