页面加载后调用Ajax

时间:2016-05-15 20:54:52

标签: javascript jquery ajax web

我正在尝试构建一个搜索页面,用户将文本输入搜索框,然后根据搜索生成页面。我有时间问题,因为在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());
    }
});

4 个答案:

答案 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。