-1

(申し訳ありませんが、以前に非常によく似た質問を投稿しましたが、元の質問が少しずれていたようです)

これが私のコードです:

$.ajax({                                      
      url: 'receive-country.php',    //the script to call to get data
      dataType: 'json',                //data format      
      success: function(data)          //on recieve of reply
      {
            var inputArray = data;
            alert(data);
            var test_data = {"af":16.63,"al":11.58,"dz":158.97};
            jQuery('#vmap').vectorMap({
                map: 'world_en',
                backgroundColor: null,
                color: '#ffffff',
                hoverColor: '#eeeeee',
                hoverOpacity: null,
                selectedColor: '#dddddd',
                values: test_data,
                enableZoom: true,
                showTooltip: true,
                scaleColors: ['#C8EEFF', '#006491'],
                normalizeFunction: 'polynomial'
            });
      }
    });

datajQueryマップに表示したいものをAjax経由で受け取っています#vmap。マップでうまく機能するものをいくつか作成しましたが、と同じ形式でtest_data取得できないようです。datatest_data

配列のフォーマットが正確に何であるかはわかりませんdataが、アラートを出すと、次のように表示されます。

US,7,US,9,US,10

フォーマットを変更するにはどうすればよいですか?


JSONデータを送信するPHPページは次のとおりです。

$country_result = mysql_query("SELECT * FROM happiness ORDER BY id ASC");
  $country_array = array();
  while($row = mysql_fetch_array($country_result)) {
    $country_array[] = array($row[4], $row[2]);
  }

  echo json_encode($country_array);

ありがとう!

編集:

これがコンソールログのスクリーンショットです。正確に読む方法がわかりません。 ここに画像の説明を入力してください

4

3 に答える 3

0

私はあなたがkey -> valueペアを取得したいと思います。したがって、PHPでは行を変更します

$country_array[] = array($row[4], $row[2]);

$country_array[$row[4]] = $row[2];

PHPで配列に追加しているので、JavaScriptで取得する実際のデータは、おそらく予想したもの['US', 7, 'US', 9, 'US', 10]ではないと思います。['US':7, 'US':9, 'US':10]

編集

今、私はあなたの更新を見ます。とにかく、キーと値のペアの配列ではなく、配列の配列を取得します(これは、JavaScriptでは非常に標準的で一般的です)。私が提案したように試してください。

于 2013-03-24T22:16:54.000 に答える
0

PHPから判断すると、dataおそらく次のような2次元配列です。

[[US,7],[US,9],[US,10]]

この方法で他の形式に変換できます。

var newData = {};
for(var i=0; i<data.length; i++){
  newData[data[i][0]] = data[i][1];
}

編集:他の回答が示唆しているように、やるべきことは明らかに問題のPHP側を修正することであり、javascript側でそれを回避することではありません。それはいくつかの価値を追加するかもしれないので、私は私の答えを残しています。

于 2013-03-24T22:17:14.790 に答える
0

PHPページの行

$country_array[] = array($row[4], $row[2]);

する必要があります

 $country_array[] = array($row[4] => $row[2]);

これにより、PHP配列が連想配列になります。これは、現在表示されているJavascript配列ではなく、Javascriptオブジェクトにjson_encodedされます。

于 2013-03-24T22:19:05.397 に答える