我正在使用xampp在本地计算机上工作,并且每个其他ajax请求都能正常运行。我当前的应用程序需要 21秒来加载3.5千字节的数据。
如果你问我,这有点慢。那我的软件在做什么呢?
该软件有4个单选按钮。用户选择一个,然后创建ajax请求
var radio = $('input[name="selection"]:checked').val();
var hidden = $('#hiddenFive').val();
$.ajax
({
type: 'GET',
url: 'curl.php',
data: {type: radio, region: 'Hampshire', hidden: hidden},
success: function(response, textStatus, XMLHttpRequest)
{
var obj = jQuery.parseJSON(response);
var strin = '';
for(var i = 0; i < obj.length; i++)
{
strin += "<b>Name of " + radio + ": </b>" + obj[i].name + "<b> | Region: </b>" + obj[i].region + "<br>";
}
$('#result').html(strin);
},
error: function(response, status, error)
{
alert("Error");
}
});
数据被发送到网站curl.php,该网站向外部网站发送curl请求。我写了外部草书,因为它位于同一个文件夹中,我们应该像外部一样行动,我们需要cURL
的数据(你知道的家庭作业)
所以,现在,URL看起来像这样
http://localhost/htmlAssignment/5/curl.php?type=town®ion=Hampshire&hidden=hiddenFive
curl.php将这些参数保存在变量中,然后将其发送到Web服务.php
<?php
$type = $_GET['type'];
$region = $_GET['region'];
$hidden = $_GET['hidden'];
$url = "http://localhost/htmlAssignment/webservice.php?type=" . $type . "®ion=" .$region. "&hidden=".$hidden;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>
webservice.php
检查隐藏值是否为hiddenFive,什么是正确的,然后调用db-function
if(isset($_GET['type']) && isset($_GET['region']) && $_GET['hidden'] == 'hiddenFive')
{
$array = array();
$region = $_GET['region'];
$type = $_GET['type'];
$array = $db->getMultiDataPOI($type, $region);
echo json_encode($array);
}
我的db函数看起来像这样
function getMultiDataPOI($type, $region)
{
$getMultiSQL = "SELECT ID, name, type, country, region, lon, lat, description FROM pointsofinterest WHERE type = :type AND region = :region";
$getMultiPrepare = $this->prepare($getMultiSQL);
$getMultiPrepare->bindParam(':type', $type);
$getMultiPrepare->bindParam(':region', $region);
$getMultiPrepare->execute();
$getMultiResult = $getMultiPrepare->fetchAll();
return $getMultiResult;
}
在那20秒之后,数据会正常显示并且应该显示,但是需要20秒,如果你问我,那就太奇怪了。这么久以来可能会出现什么问题?正如我所说,我正在使用xampp和任何其他使用相同web服务的AJAX请求进行localhost加载。为什么这需要这么长时间?
这是一个屏幕,如果它有助于FireBug。我希望你能读懂它。
答案 0 :(得分:0)
根据我的经验,我发现localhost经常会导致奇怪的行为,例如您所描述的内容。您是否只是尝试将localhost的引用更改为127.0.0.1并使用它? Localhost必须仍然进行名称查找,有时候您的主机文件不可靠,请参阅What is the difference between 127.0.0.1 and localhost
此外,我会尝试直接打开PHP服务文件,即您在AJAX中调用的文件,以确保它自己快速加载。由于它正在进行SQL查询,因此您的查询甚至MySQL配置可能会导致您出现一些延迟。
另一方面,我会谨慎使用您的webserver.php文件。您的所有请求数据都不会被过滤并直接进入您的数据库,这会使您的应用程序对SQL注入开放。