2012-11-09 61 views
1

我試圖從extjs上傳文件到PHP。該文件正常上傳,但用戶界面卡住,並引發以下錯誤:未捕獲您正在嘗試解碼和無效的JSON字符串:extjs文件上傳無效JSON響應

我已搜索並找到將content-type標題設置爲text/html的建議,但那沒用。這裏是我的代碼:

xtype:'form', 
width:300, 
bodyPadding:5, 
frame:false, 
items: [{ 
    xtype: 'filefield', 
    name: 'csv', 
    msgTarget: 'side', 
    allowBlank: false, 
    buttonOnly:true, 
    anchor: '100%', 
    buttonText: 'Import CSV', 
    listeners: { 
     'change': function(fb,v){ 
      var form = this.up('form').getForm(); 
      form.submit({ 
       url:'/Portal/parsecsv.php', 
       standardSubmit:false, 
       method:'PUT' 
      }) 
     } 
    } 
}] 

在parsecsv.php,我只是有:

<?php header('Content-type:text/html');?> 

請協助。

回答

1

問題已解決。問題在於,在文件上傳時,ExtJS默認預期會出現JSON響應,但由於某種原因,ExtJS將JSON響應封裝在標記中。所以我必須做的是將響應的內容類型設置爲PHP中的text/html,然後在ExtJS中,將響應解析爲String,而不是JSON。另外,我發現在成功上傳時,ExtJS在提交表單時觸發「失敗」事件而不是「成功」事件。

+0

確定添加標籤是ExtJS而不是瀏覽器? –

1

的JSON正確的標題是

Content-type: application/json 
2

你傳入一個無效的JSON字符串。我離開的問題十分開始,因爲你可能只是不添加完整的JSON字符串你的問題,我只強調內你貼什麼:

'change': function(fb,v){ 

這不是有效的JSON。將工作中的回覆中的JavaScript從有效的Json字符串中移除。