2016-07-09 15 views
0

PHPからjQueryにフォーマットされたStringを渡そうとしています。PHPからjqueryへのDecimal文字列の受け渡し

ここ

VM2203:3 Uncaught SyntaxError: Unexpected number in the browser.

があるとして、しかし、私は私のコードのエラーを取得しています

<?php 
$OSlist = []; 
$category = ""; 
$pieData = ""; 
$curl = curl_init(); 

curl_setopt_array($curl, array(
CURLOPT_PORT => "8081", 
CURLOPT_URL => "http://localhost:8081/api/devices/hoursBy/OSVersion", 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_ENCODING => "", 
CURLOPT_MAXREDIRS => 10, 
CURLOPT_TIMEOUT => 30, 
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
CURLOPT_CUSTOMREQUEST => "GET", 
CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache", 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
echo "cURL Error #:" . $err; 
} else { 
$decodeStr = json_decode($response, true); 
foreach ($decodeStr as $item) { 
    $os = $item['_id']['os']; 
    if ($os == $selectedOS) { 
     if ($item['total_hours'] != 0) { 
      $OSlist[$item['_id']['version']] = $item['total_hours']; 
      // echo 'iOS'.$item['_id']['version'] . '&nbsp;:&nbsp;' . $item['total_hours'] ,"<br>"; 
     } 
    } 
} 
ksort($OSlist); 
foreach ($OSlist as $key => $val) { 
    // echo "$key = $val" . "<br>"; 
    $category = $category . $key . ","; 
    $pieData = $pieData . "[" . $key . "," . $val . "],"; 
} 
$pieData="[".$pieData."]"; 
echo $pieData; 
// print_r($OSlist); 
} ?> 
<script > 
     $('document').ready(function() { 
      var jsArray = <?php echo $pieData; ?>; 
      alert(jsArray); 

     }); 


    </script> 

Piedata出力は

[[2.3.4,97.9],[4.0.3,11.6],[4.0.4,2.4],[4.1.1,15.1],[4.1.2,398.4],[4.2.1,45.8],[4.2.2,27.3],[4.3,321],[4.4.2,694.9],[4.4.4,478.7],[5,646.3],[5.0.1,177.5],[5.0.2,1210.5],[5.1,126.2],[5.1.1,524.4],[6,201.5],] 

は、私が実際にデータを円グラフをhighchartするためにこのデータを渡す必要があります次のグラフは、モバイル版とその使用時間のグラフです。

function loadPieGraph() { 
      // Radialize the colors 
      var android = <?php echo $androidhrs ?>; 
      var ios = <?php echo $ioshrs ?>; 
      var obj = [{ 
        type: 'pie', 
        name: 'Browser share', 
        data: [ 
         ['4.1', '23.0'], 
         { 
          name: '5.0', 
          y: '40.2', 
          sliced: true, 
          selected: true 
         }, 
        ] 
       }]; 
      Highcharts.getOptions().colors = Highcharts.map(Highcharts.getOptions().colors, function (color) { 
       return { 
        radialGradient: { 
         cx: 0.5, 
         cy: 0.3, 
         r: 0.7 
        }, 
        stops: [ 
         [0, color], 
         [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken 
        ] 
       }; 
      }); 

      // Build the chart 
      $('#container').highcharts({ 
       chart: { 
        plotBackgroundColor: null, 
        plotBorderWidth: null, 
        plotShadow: false, 
        type: 'pie' 
       }, 
       title: { 
        text: 'Browser market shares. January, 2015 to May, 2015' 
       }, 
       tooltip: { 
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' 
       }, 
       plotOptions: { 
        pie: { 
         allowPointSelect: true, 
         cursor: 'pointer', 
         dataLabels: { 
          enabled: true, 
          format: '<b>{point.name}</b>: {point.percentage:.1f} %', 
          style: { 
           color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' 
          }, 
          connectorColor: 'silver' 
         } 
        } 
       }, 
       series: obj 
      }); 


     } 
+2

なぜjson_encode()を使用しないのですか? – Robert

+0

これは、多くのajax問題を解決します。 – 25r43q

答えて

1

この全体の一部:

foreach ($OSlist as $key => $val) { 
    // echo "$key = $val" . "<br>"; 
    $category = $category . $key . ","; 
    $pieData = $pieData . "[" . $key . "," . $val . "],"; 
} 
$pieData="[".$pieData."]"; 
echo $pieData; 
// print_r($OSlist); 
} ?> 
<script > 
     $('document').ready(function() { 
      var jsArray = <?php echo $pieData; ?>; 
      alert(jsArray); 

     }); 


    </script> 

は、自然の中で、実際に障害のある見えます。

あなたはむしろべき:

$pieData = json_encode($OSlist); 

とあなたは、単にこれを行うことができますスクリプトタグ内:

jsArray = JSON.parse("<?php echo $pieData; ?>"); 

をそしてJSの書式HighChartの関連配列を行います。 また、PHPで最初に書式設定を行うこともできます.Jsonは最終フォームをエンコードし、直接jsに渡します。ここで再びJSON.parseを再度行う必要があります。

この種のケースでは、常にJSON形式のデータトランザクションを実行します。

希望します。

希望します。

+0

var jsArray = JSON.parse(<?php echo $ pieData;?>); アラート(jsArray); – user2350138

+0

に何も表示されない – user2350138

+0

これを試してください:var jsArray = JSON.parse( "<?php echo $ pieData;?>"); コンソールに表示されるエラーを確認してください。 –

関連する問題