(重要)编辑3: 单独运行testajax2.php而 不是 Ajax。持续时间大致相同,为1.02-1.03秒。所以我想这意味着问题出在PHP- MySQL或XAMPP中?
当我通过phpMyAdmin查询运行它时,结果如下:显示第0-29行(总计约50行。查询耗时 0.0015秒 )。看来问题根本不在于Ajax,而可能在于PHP。我怎样才能解决这个问题?(我也刚刚编辑了问题标题。)
答案: 在位于以下位置的主机文件中添加以下行 :”C:\Windows\System32\drivers\etc”
”C:\Windows\System32\drivers\etc”
127.0.0.1 localhost
之前的问题:
jQuery Ajax的 最小持续时间至少为1秒, 这对正常吗?我试过$.get,$.post,$.getjson,$.ajax({type:'POST'}),$.ajax({type:'GET'})。正如我所说的,这是最低要求。甚至可能恶化到约3秒。我怀疑这是SQL查询,因为当我在phpMyAdmin中尝试它们时,结果显示得非常快。
$.get
$.post
$.getjson
$.ajax({type:'POST'})
$.ajax({type:'GET'})
如果查询非常简单并且表中只有2个元素,也将紧随其后的是1秒的最小值。我正在使用最新的XAMPP,我不知道这是否重要,但是我正在通过localhost和127.0.0.1访问文件。
我在本地环境中运行该文件的同一台笔记本电脑上。jQuery已更新。返回的值/数组是json_encoded。我正在使用mysqli。该数据库位于InnoDB中,并且其中只有大约五个表,并且几乎没有任何内容。这是一个非常简单的示例查询:
index.php
var test_id =2; testcall(); function testcall(){ $.ajax({ url: 'testajax2.php', type: 'POST', data: {test_id: test_id}, success: function(data){ } }); }
testajax2.php
$mysqli = new mysqli('localhost', 'root', '', 'testdb'); $mysqli->set_charset("utf8"); if(mysqli_connect_errno()) { echo "Connection Failed: " . mysqli_connect_errno(); exit(); } $testreceive = $_POST['test_id']; $query = "SELECT First_Name from tblperson"; $result = $mysqli->query($query); $row = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($row);
tblperson包含50条记录,并且只有四列。根据Firebug的说法,完成这项极其简单的任务花了1.03秒。我不确定它的真正含义,但是通过Firebug的“ 网络” 选项卡查看时,该条完全是紫色的。0和1.03秒等待。+1.03秒和0接收。
如果我以json_encode($row)或寄出也没关系foreach($row as $value){ echo $value['First_Name']; }。仍将至少大约1秒。我已经在Chrome和Safari上进行过尝试,尽管我没有确切的时间长度,但我可以说大致相同。但是对于 没有SQL查询 的简单Ajax调用。如果我没记错的话,它很快。我会返回一个示例和持续时间输出。
json_encode($row)
foreach($row as $value){ echo $value['First_Name']; }
在位于以下位置的主机文件中添加以下行: ”C:\Windows\System32\drivers\etc”
这解决了我的问题。PHP-MySQL现在可以完成其任务,具体取决于20-500 ms之间的复杂程度。