0

dud当我使用 ajax 调用我的 php 文件时,几乎需要整整 30 秒才能显示任何结果。

我怎样才能使结果更加即时?

我的ajax是:

$("#j_search").keyup(function(){

        if(($.trim($(this).val()) != '') & ($(this).val() != ' ')){

            $.post('../php/ajax/j_search.php', {search: $(this).val()}, function(data){
                $(".matched_results").html(data).show();
            });
        }
    });

如果您出于某种原因认为我的 php 错误,请编写您自己的示例,我会对其进行测试,尽管我对此表示怀疑。我不能给出php源代码。

我可能会因为发布代码而被解雇,但在这样的时候似乎值得。这是 PHP 的一个片段:

class SQL_COMMANDS{
    //Connecting vars
    private $_HOST = "localhost";
    private $_USER = "root";
    private $_PASS = "dud";
    private function HANDLE($ERRORNUM, $ERRORMSG){//USED FOR ERROR HANDLER
        $HANDLE = new HANDLE();
        $HANDLE->DIRECT($ERRORNUM, $ERRORMSG);
    }

    function connect($DB){
        $con=mysqli_connect($this->_HOST,$this->_USER,$this->_PASS,$DB);
        if (mysqli_connect_errno($con)){
            $this->HANDLE("001","Connection failed (DB)");
        }
        return $con;
    //  mysqli_close($con);
        //$SQL_COMMANDS->connect("DB");
}

    function SQL($DB, $SQL){//Construct used to transact CONNECT
        return mysqli_query($this->connect($DB), $SQL);
    //  mysqli_close($this->connect($DB));
        //$SQL_COMMANDS->SQL("DB", "SELECT * FROM TABLE WHERE ID=1");
    }


    function Assoc_Grab($DB, $SQL, $ARRAYGRAB){//Returns Data associated with the ARRAY directed from the QUERY
        $DATA = array();
        $ROW = mysqli_fetch_assoc($this->SQL($DB, $SQL));
        foreach($ARRAYGRAB as $pointer){
            array_push($DATA,$ROW[$pointer]);
        }
        //print_r($SQL_COMMANDS->Assoc_Grab('DB', "SELECT * FROM TABLE WHERE ID='1'", array('NAME')));
        return $DATA;
    }
}
4

2 回答 2

0

您的服务器托管在哪里?您是否进行过基线 ping 测试来检查延迟问题?

尝试创建一个仅显示单个数字、字母等的 php 页面,然后使用 google chrome 开发人员工具在控制台中运行以下命令:

$.get('../php/ajax/j_search.php', function(data){
    console.log(data);
});

在 $.get 完成后检查网络选项卡的结果也是值得的。将鼠标悬停在蓝色时间线栏上。它将为您提供连接、等待、发送和接收时间的细分。

于 2013-08-13T01:05:51.273 回答
0

您编写的 JavaScript 代码没有任何不妥之处。这绝对是您的 PHP 或您正在使用的服务器的问题。

尝试用这样的简单代码替换您的 PHP(即:php/ajax/j_search.php):

<?php
echo rand();
?>

现在,当焦点位于“#j_search”文本框上时,每次按任意键时,您应该几乎立即看到一个新的随机数。如果这仍然需要一段时间,那么您可能需要检查您的服务器。尝试重新启动您的机器,这可能会解决问题!

Edit1:还要检查这个答案: WAMP/XAMPP 在 localhost 上响应非常慢

Edit2:尝试在您提供的 PHP 代码中更改此行:

private $_HOST = "localhost";

和:

private $_HOST = "127.0.0.1";
于 2013-08-13T01:11:08.250 回答