我正在尝试从extjs上传文件到PHP。该文件正在正确上传,但UI卡住并引发以下错误:未捕获您正在尝试解码并使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');?>
请协助。
答案 0 :(得分:2)
您传递的是无效的Json字符串。我一开始就把这些问题留下来,因为你可能没有在你的问题中添加完整的Json字符串,我只在你粘贴的内容中突出显示:
'change': function(fb,v){
这是无效的Json。从工作中的响应中删除javascript以获取有效的Json字符串。
答案 1 :(得分:1)
JSON的正确标头是
Content-type: application/json
答案 2 :(得分:1)
问题已经解决了。问题是在文件上传时,ExtJS默认需要JSON响应,但出于某种原因,ExtJS将JSON响应包装在标签内。所以我要做的是在PHP中设置text / html响应的内容类型,然后在ExtJS中,将响应解析为String,而不是JSON。另外,我发现在成功上传后,ExtJS会在表单提交时触发“失败”事件而不是“成功”事件。