我正在尝试上传一个包含多条记录的文本文件,但我一直收到一个syntax()错误。 如果文件中只有一条记录,则实现的逻辑可以正常工作。 可能问题是我在foreach循环中回显了多个记录吗?
说明
Ext JS接口,用户浏览文件。一旦选择了文件,它就会上传到服务器并在PHP中解析。解析过程称为processFile 这是由js文件调用的。
我注意到了
以下是PHP代码:
<?php
$action = $_REQUEST['action'];
if ($action == 'uploadFile') {
$fileName = $_FILES['file']['tmp_name'];
$fileContent = file_get_contents($fileName);
$fileInfo = parseFile($fileContent); //custom formatting
echo wrap_answer(array(
'originalFile' => $fileContent,
'fileInfo' => $fileInfo,
'success' => true
));
}
if ($action == 'processFile') {
$fileContent = $_REQUEST['file'];
$fileInfo = parseFile($fileContent);
foreach($fileInfo['lines'] as $line) {
$input = array(
'id' => $line['id'],
'name' => $line['name']);
//custom function to insert records from file into clients table
//function returns the inserted records ID
$insert_id = handler_Insert('clients',$input);
$success = ($insert_id == null || $insert_id == 0)?false:true;
echo json_encode(array(
'success' => $success)
);
//NOTE:Processing records 1 by 1 and echoing the result
// Could this be the error? Any suggestions to better
// handle this process?
}
}
任何帮助,建议等都非常感谢! 感谢
答案 0 :(得分:0)
<强>解决强>
我不得不重写我的代码,只返回一个包含多条记录的json字符串 像这样:
//new variable to hold all array elements
$rows = array();
//In the foreach loop push the array item on $rows
array_push($rows,array(
'success' => $success,
'record' => $input));
} //end of foreach loop
echo json_encode(array(
'id' => 'clients',
'rows' => $rows));
}//end of processFile function
然后在我的js文件中,我所要做的就是使用循环遍历结果 Ext.each像这样:
loadClient:function(result){
var records = result.rows; //rows[0]{id,name},rows[1]
console.log(records);
Ext.each(records,this.processKey,this);
},
processKey:function(item,itemIndex){
if(item.success){
alert('Record inserted!');
}
else{
alert('Failed to insert record');
}
}