2014-02-11 20 views
0

我有項目在extjs網格面板內顯示文本區域。表格成功全部成爲文本區並保存到數據庫中。但是當我加載從數據庫中的值示出其語法錯誤ext JS Grid文本區域json語法錯誤

在這樣

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。請給我解決方案 謝謝

+0

請包括錯誤消息。 –

+0

未捕獲的SyntaxError:意外的令牌非法 – user2698904

回答

0

構建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, 
)); 
+0

我嘗試過不成功,但此問題已解決。我在負載PHP中使用str_replace(「\ n」,「\\ n」,$ row ['target_ket']) – user2698904

0

錯誤消息Uncaught SyntaxError: Unexpected token ILLEGAL意味着通常意味着一個字符串不是在同一行上關閉的,換句話說就是字符串中未轉義的新行。