ext JS 网格文本区域 JSON 语法错误



我有项目在 extjs 网格面板中显示文本区域。 表单"成功完全"变为文本区域并保存到数据库。 但是当我从数据库加载值时,它显示语法错误

在谷歌控制台中显示这样的错误

Ext.data.JsonP.callback8({"totalItems": 2,"items": [{ "no": "1","kegiatan": "Target 12345 - 5432
asd
asd
asd
", "target": "harus sesuai target" },{ "no": "2","kegiatan": "Target 12 revisi error lagi", "target": "78.00" }]});

这里由request_form.js创建的表单

function test(v){
    return v === undefined || v === null ? '' : v.replace(/n/g, '<br>');
}
.......
xtype: 'gridpanel',
            id: 'frm_request_form_gridpanel',
            title: 'Rencana Target dan Pencapaian Kerja',
            width: 750,
            height: 300,
            border: 1,
            margin: '10 5 10 10',
            store: Ext.data.StoreManager.lookup('DetailTargetStore'),
            columns: [
                {header:'No',  dataIndex: 'no', width: 40},
                            {header:'Jenis Kegiatan', dataIndex: 'kegiatan',  
                                width: 350,
                                //type: 'textarea',
                                //grow:true,
                                //renderer:columnWrap
                               // field: {type: 'textarea',maxLength: 1024,renderer:columnWrap,grow:true}
                                renderer:test,
                                editor:'textarea',
                                flex: 1 
....
 handler: function(){
                          var dataObj = [];
              var dataEmployee = EmployeReqStore.data.items;
                          var editedRecords = DetailTargetStore.getModifiedRecords();
              for (var i=0; i<editedRecords.length; i++) {
                                dataObj.push(
                                    {
                                        tag_id:'edited',
                                        emp_id:Ext.getCmp('nik').getValue(),
                                        periode: Ext.getCmp('frm_request_form-periode').getValue(),
                                        ccgroup : dataEmployee[0].data.ccgroup_id,
                                        costcenter : dataEmployee[0].data.costcenter_id,
                                        location : dataEmployee[0].data.location_id,
                                        targetno: editedRecords[i].data.no,
                                        targetket: editedRecords[i].data.kegiatan,
                                        targetnilai: editedRecords[i].data.target,
                                        //targettipe: editedRecords[i].data.target_tipe,
                                        status: 'DRAFT' 
                                    }
                                );
                            }  
.....
 id: 'SubmitBtn', 
                        text: 'Submit',
                        handler: function(){
                          var dataObj = [];
                          var dataEmployee = EmployeReqStore.data.items;
                          var editedRecords = DetailTargetStore.getModifiedRecords();
              for (var i=0; i<editedRecords.length; i++) {
                                dataObj.push(
                                    {
                                        tag_id:'edited',
                                        emp_id:Ext.getCmp('nik').getValue(),
                                        periode: Ext.getCmp('frm_request_form-periode').getValue(),
                                        ccgroup : dataEmployee[0].data.ccgroup_id,
                                        costcenter : dataEmployee[0].data.costcenter_id,
                                        location : dataEmployee[0].data.location_id,
                                        targetno: editedRecords[i].data.no,
                                        targetket: editedRecords[i].data.kegiatan,
                                        targetnilai: editedRecords[i].data.target,
                                        //targettipe: editedRecords[i].data.target_tipe,
                                        status: 'NEW' 
                                    }
                                );
                            }  

这里使用 JSON 对象保存 PHP

foreach ($dataObj as $object) {
...
 $stmtupdt = $db->prepare($sqlupdt);
                               $stmtupdt->execute(array(
                                      ':docno_id' => $doc_no,
                                      ':target_ket' => $object->targetket,
                                      //':target_tipe' => $object->targettipe,
                                      ':target_nilai' => $object->targetnilai,
                                      ':target_no' => $object->targetno, 
                                      ':target_status' => $object->status,
                                      ':periode_id' => $object->periode)
...

这里使用 JSON 对象加载 PHP

$result = mysql_query($sql);
$totalitem = mysql_num_rows($result);
$count = 0;
echo '"totalItems": ' . $totalitem. ',';    
echo '"items": [';
if ($result) {
    if ($totalitem>0){
        while($row = mysql_fetch_array($result)){
            if(++$count == $totalitem) {
                echo '{ "no": "'.$row['target_no'].'","kegiatan": "'. htmlentities($row['target_ket']).'", "target": "'.$row['target_nilai'].'" }';
            }
            else {
                echo '{ "no": "'.$row['target_no'].'","kegiatan": "'. htmlentities($row['target_ket']).'", "target": "'.$row['target_nilai'].'" },';                
            }            
        }    

我认为 JSON 传递对象存在一些问题,但我不知道如何修复 JSON。 请给我解决方案谢谢

构建一个 PHP 数组,并使用 json_encode

$items = array();
while ($row = mysql_fetch_array($result)) {
    $items[] = array(
        'no' => $row['target_no'],
        'kegiatan' => htmlentities($row['target_ket']),
        'target' => $row['target_nilai'],
    );
}
echo json_encode(array(
    'totalItems' => $totalItems,
    'item' => $items,
));
错误消息

Uncaught SyntaxError: Unexpected token ILLEGAL通常表示未在同一行上关闭的字符串,或者换句话说,字符串中未转义的新行。

最新更新