我试图用jQuery读取和显示一个PHP数组,显式地显示一个解析的SRT字幕文件。在console.log(data)成功响应之后,我可以看到所有数据一起执行ajax,但我想操作这些数据。我的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中获取结构数组中的数据,我不明白?
谢谢
发布于 2015-11-30 15:13:05
我想我会把我的评论作为回应..。
首先..。
在ajax调用中将dataType: 'JSON',设置在cache: false,下。
没有必要做JSON.parse(data)
最后,将success: function(data_)更改为success: function(data),并在循环中遍历data
在这一点上,一切都应该正常运作。
发布于 2015-11-30 14:39:02
成功函数定义了data_ &您是console.logging data_,但是您正在循环数据
success: function(data_){
console.log(data_);..。
for(var i = 0; i < data.length; i++) {https://stackoverflow.com/questions/34000889
复制相似问题