2012-11-09 66 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字符串中移除。