2015-11-30 32 views
0

我試圖用jQuery讀取並顯示一個PHP數組,顯式地是一個解析的SRT字幕文件。我可以在ajax成功響應後看到所有數據在一起做console.log(data),但我想操縱數據。 我jQuery代碼:無法在JavaScript中讀取PHP結構數組jQuery

var jsonURL = JSON.stringify(data); 
     $.ajax({ 
      type: "POST", 
      url: "parser_srt.php", 
      data: {url: jsonURL}, 
      cache: false, 

      success: function(data){ 
       console.log(data); 
       var cont = 0; 
       var data = JSON.parse(data) 
       for(var i = 0; i < data.length; i++) { 
        n_ = data[i].number; 
        i_ = data[i].startTime; 
        o_ = data[i].stopTime; 
        t_ = data[i].text; 

        //is = srtToSeconds(i_); 
        //os = srtToSeconds(o_); 

        var startUp = [{ "start": i_, "end": o_, "text": t_}]; 
        subtitles_1.push(new paragraph(i + 1, startUp[0].start, startUp[0].end, startUp[0].text)); 

        if(flag == 1){ 
         var startUp_trans = [{ "start": i_, "end": o_, "text": ' ' }]; 
         subtitles_2.push(new paragraph(i + 1, startUp_trans[0].start, startUp_trans[0].end, startUp_trans[0].text)); 
        } 
        //cont++; 
       } 
      } 
     }); 

而且PHP代碼是這一個:

<?php 

define('SRT_STATE_SUBNUMBER', 0); 
define('SRT_STATE_TIME',  1); 
define('SRT_STATE_TEXT',  2); 
define('SRT_STATE_BLANK',  3); 

$url = json_decode($_POST['url']); 

$lines = file($url); 

$subs = array(); 
$state = SRT_STATE_SUBNUMBER; 
$subNum = 0; 
$subText = ''; 
$subTime = ''; 

foreach($lines as $line) { 
    switch($state) { 
     case SRT_STATE_SUBNUMBER: 
      $subNum = trim($line); 
      $state = SRT_STATE_TIME; 
      break; 

     case SRT_STATE_TIME: 
      $subTime = trim($line); 
      $state = SRT_STATE_TEXT; 
      break; 

     case SRT_STATE_TEXT: 
      if (trim($line) == '') { 
       $sub = new stdClass; 
       $sub->number = $subNum; 
       list($sub->startTime, $sub->stopTime) = explode(' --> ', $subTime); 
       $sub->text = $subText; 
       $subText  = ''; 
       $state  = SRT_STATE_SUBNUMBER; 

       $subs[]  = $sub; 
      } else { 
       $subText .= $line; 
      } 
      break; 
    } 
} 
echo json_encode($subs); 
?> 

爲什麼我不能在jQuery結構陣列中的數據,我不明白?

謝謝

+2

在你的ajax調用中設置'dataType:'JSON','cache:false'。並且不需要執行'JSON.parse(data)' – VIDesignz

+1

當您收到有效載荷時,您能向我們展示您的數據結果是什麼樣子嗎? – VIDesignz

+0

是的,這是數據: [{「number」:「\ ufeff1」,「stopTime」:「00:00:15,555」,「startTime」:「00:00:14,060」,「text」:「So \ n「},{」number「:」2「,」stopTime「:」00:00:19,636「,」startTime「:」00:00:15,580「,」text「:」 \ n「},{」number「:」3「,」stopTime「:」00:00:22,020「,」startTime「:」00:00:19,660「,」text「:Elle,\ nclose to Lista。 \ n「},{」number「:」4「,」stopTime「:」00:00:25,556「,」startTime「:」00:00:23,140「,」 \ n「}, – Sergi

回答

2

我想我將發表我的意見作爲答案...

首先...

在您的ajax調用中設置dataType: 'JSON',cache: false,之下。

有沒有必要做JSON.parse(data)

最後,變更success: function(data_)success: function(data)和遍歷data在循環

一切都應該在這一點上工作。

1

你成功的函數定義data_中&你console.logging data_中,但你通過數據

success: function(data_){ 
console.log(data_); 

循環...

for(var i = 0; i < data.length; i++) {