Javascript PHP天气网站
这是一个气象项目 当用户输入一个正确的城市时,它会返回天气,如果他没有输入任何内容,就会发出警报,但当他输入一个错误的警报时,问题就发生了,它不会像预期的那样返回警报 查看链接以测试它 那么,我如何使它返回一个警报,这个城市不存在,我也在使用引导 有3个div具有警报类id success和noCity正在工作,但fail始终为空 关键是我正在从一个气象网站上检索信息,如果这个城市存在,数据将保存在id为success的div中,否则如果没有这样的城市,id为success的div就会出现,但它不起作用 index.php scraper.phpJavascript PHP天气网站,javascript,php,Javascript,Php,这是一个气象项目 当用户输入一个正确的城市时,它会返回天气,如果他没有输入任何内容,就会发出警报,但当他输入一个错误的警报时,问题就发生了,它不会像预期的那样返回警报 查看链接以测试它 那么,我如何使它返回一个警报,这个城市不存在,我也在使用引导 有3个div具有警报类id success和noCity正在工作,但fail始终为空 关键是我正在从一个气象网站上检索信息,如果这个城市存在,数据将保存在id为success的div中,否则如果没有这样的城市,id为success的div就会出现,但它
<?php
$city=$_GET['city'];
$city=str_replace(" ","",$city);
$site="http://www.weather-forecast.com/locations/".$city."/forecasts/latest";
$old_error_reporting = error_reporting(E_ALL ^ E_WARNING);
$content = file_get_contents($site);
error_reporting($old_error_reporting);
if ($content === FALSE) {
$error = true;
} else {
$tweets = $content;
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)</s',$tweets,$matches);
$error = false;
}
if(!$error){
echo $matches[0];
}else{
echo "error";
}
?>
调试脚本时,我发现
$(function() {
$('#FindMyWeather').click(function(event) {
event.preventDefault();
$('.alert').hide();
if ($('#city').val() != "") {
$.get("scraper.php?city=" + $('#city').val(), function(data) {
if (data=="") {
$('#fail').fadeIn(500);
} else {
$('#success').html(data).fadeIn(500);
}
});
} else {
$('#noCity').fadeIn(500);
}
});
});
您的数据响应得到两个输入空格,它不是空的,它的容器两个输入,这就是为什么它用调试器显示空格检查
试一试
$(function() {
$('#FindMyWeather').click(function(event) {
event.preventDefault();
$('.alert').hide();
if ($('#city').val() != "") {
$.get("scraper.php?city=" + $('#city').val(), function(data) {
data.replace(/\r?\n|\r/g, "");
if (data=="") {
$('#fail').fadeIn(500);
} else {
$('#success').html(data).fadeIn(500);
}
});
} else {
$('#noCity').fadeIn(500);
}
});
});
希望这能解决您的问题更改scraper.php
<?php
$city=$_GET['city'];
$city=str_replace(" ","",$city);
$site="http://www.weather-forecast.com/locations/".$city."/forecasts/latest";
$old_error_reporting = error_reporting(E_ALL ^ E_WARNING);
$content = file_get_contents($site);
error_reporting($old_error_reporting);
if ($content === FALSE) {
$error = true;
} else {
$tweets = $content;
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)</s',$tweets,$matches);
$error = false;
}
if(!$error){
echo $matches[0];
}else{
echo "error";
}
?>
希望它能起作用您希望我们做什么?毫无疑问,返回一个假值是有问题的,只需转到网站,并放入一些随机单词,它将返回空值,虽然它应该返回city不存在如果city确实存在,它会返回正确的天气,但如果不存在,它会返回空的检查script.js和scraper.php文件如果位置为false,是否确实会得到空的数据,或者可能会得到有错误的数据?如果我在使用wamp的计算机上,我有一个错误,但使用的是来自另一个网站我有一个空的结果正如你说的那样,我编辑了我的帖子,查看上面的错误图片,我在我的计算机上使用wamp来创建这个网站警告:文件\u获取\u内容:打开流失败:HTTP请求失败!HTTP/1.1 404未在Insrry中找到,但它不起作用,我不知道这是否有帮助,但当$matches[1]为空时,如果我echo City不存在,则会发出警报,但它正在使用id为success的div,因此我不知道这是php问题还是javascript问题:您更改了什么?为什么会有所不同?请以回答的形式表达你的答案,而不是以发现差异的游戏的形式。
$(function() {
$('#FindMyWeather').click(function(event) {
event.preventDefault();
$('.alert').hide();
if ($('#city').val() != "") {
$.get("scraper.php?city=" + $('#city').val(), function(data) {
if (data=="") {
$('#fail').fadeIn(500);
} else {
$('#success').html(data).fadeIn(500);
}
});
} else {
$('#noCity').fadeIn(500);
}
});
});
$(function() {
$('#FindMyWeather').click(function(event) {
event.preventDefault();
$('.alert').hide();
if ($('#city').val() != "") {
$.get("scraper.php?city=" + $('#city').val(), function(data) {
data.replace(/\r?\n|\r/g, "");
if (data=="") {
$('#fail').fadeIn(500);
} else {
$('#success').html(data).fadeIn(500);
}
});
} else {
$('#noCity').fadeIn(500);
}
});
});
<?php
$city=$_GET['city'];
$city=str_replace(" ","",$city);
$site="http://www.weather-forecast.com/locations/".$city."/forecasts/latest";
$old_error_reporting = error_reporting(E_ALL ^ E_WARNING);
$content = file_get_contents($site);
error_reporting($old_error_reporting);
if ($content === FALSE) {
$error = true;
} else {
$tweets = $content;
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)</s',$tweets,$matches);
$error = false;
}
if(!$error){
echo $matches[0];
}else{
echo "error";
}
?>
if (data=="") {
$('#fail').fadeIn(500);
}
else if(data == "error"){
$('#fail').html('City Not Exist').fadeIn(500);
}
else {
$('#success').html(data).fadeIn(500);
}