Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP天气网站_Javascript_Php - Fatal编程技术网

Javascript PHP天气网站

Javascript PHP天气网站,javascript,php,Javascript,Php,这是一个气象项目 当用户输入一个正确的城市时,它会返回天气,如果他没有输入任何内容,就会发出警报,但当他输入一个错误的警报时,问题就发生了,它不会像预期的那样返回警报 查看链接以测试它 那么,我如何使它返回一个警报,这个城市不存在,我也在使用引导 有3个div具有警报类id success和noCity正在工作,但fail始终为空 关键是我正在从一个气象网站上检索信息,如果这个城市存在,数据将保存在id为success的div中,否则如果没有这样的城市,id为success的div就会出现,但它

这是一个气象项目

当用户输入一个正确的城市时,它会返回天气,如果他没有输入任何内容,就会发出警报,但当他输入一个错误的警报时,问题就发生了,它不会像预期的那样返回警报

查看链接以测试它

那么,我如何使它返回一个警报,这个城市不存在,我也在使用引导

有3个div具有警报类id success和noCity正在工作,但fail始终为空

关键是我正在从一个气象网站上检索信息,如果这个城市存在,数据将保存在id为success的div中,否则如果没有这样的城市,id为success的div就会出现,但它不起作用

index.php

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";
}

?>

调试脚本时,我发现

$(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);
                }