0

これは、PHP ファイルを呼び出すために使用する ajax/dojo であり、データベース テーブルからデータを取得するように要求します。

     var _getWeatherInfo = function(){
     dojo.xhrget({

         url: "PHP/weather.php?ntown=" + _ntown,

         handleAs: "json",
         timeout: 5000,

         response: function(response, weather_info) {
            _refreshWeatherList 
         },          
         error: function(error_msg, weather_info) {
             _handleError(error_msg);
         }
     });
 } 

以下の次のコードは、返された json 配列オブジェクト (javascript ファイルでは "weather_info" になっています) を調べて、オブジェクトからのデータを "_weather" という javascript 配列に追加するために使用するものです。

    var _refreshWeatherList = function(weather_info) {
        for (var i = 0; i < weather_info.length; i++) {
        _weather.push(weather_info[i]);
    }
 }

私の問題は次のとおりです。

アプリを実行し、「_weather」配列に警告するために使用したボタンをクリックすると、何も表示されないため、PHPリクエストから実際に適切な応答が得られているとは思いません。リクエストから適切に応答を受け取るようにコードを変更するにはどうすればよいですか。

助けてくれてありがとう。

編集:PHP:

<?php   

$ntown = $_GET['ntown'];

$weather = array();

$query="SELECT * FROM `weather` WHERE `town` = '$ntown'";
$result=mysql_query($query) or die ("Query to get data from table failed: ".mysql_error());

while($row = mysql_fetch_row($result)) {

    $weather = $row;
}

echo json_encode($weather);

mysql_close();

?>

4

2 に答える 2

1

これが単なるタイプミスでない限り、問題は次のビットにあると思います。

     response: function(response, weather_info) {
        _refreshWeatherList 
     }, 

次のように変更してみてください。

     load: function(response) {
        _refreshWeatherList(response); 
     }, 
     // or just load: _refreshWeatherList

このような問題をデバッグするには、ブラウザの開発者ツールの使い方を学びましょう。Firefox では、[ツール] -> [Web 開発者] -> [Web コンソール] を使用するか、Chrome では [F12] をクリックして [ネットワーク] タブを選択します。(通常、他のブラウザにも同様のツールがあります。)これらは、行われたリクエストについて通知し、リクエストをクリックすると、レスポンス、ヘッダーなどを表示できます。

于 2013-03-26T10:47:05.343 に答える
0

PHPコードの問題:

$weather = $row;

する必要があります

$weather[] = $row;
于 2013-03-26T20:46:04.497 に答える