【问题标题】:extjs file upload invalid JSON responseextjs 文件上传无效的 JSON 响应
【发布时间】:2012-10-30 03:17:37
【问题描述】:

我正在尝试从 extjs 将文件上传到 PHP。文件正在正确上传,但 UI 卡住并抛出以下错误:Uncaught You're trying to decode and invalid JSON String:

我已经搜索并找到了将 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');?>

请帮忙。

【问题讨论】:

    标签: php extjs


    【解决方案1】:

    问题已解决。问题在于,在文件上传时,ExtJS 默认需要 JSON 响应,但出于某种原因,ExtJS 将 JSON 响应包装在标签内。所以我必须做的是在 PHP 中将响应的内容类型设置为 text/html,然后在 ExtJS 中,将响应解析为字符串,而不是 JSON。另外,我发现在成功上传时,ExtJS 在表单提交时触发“失败”事件而不是“成功”事件。

    【讨论】:

    • 确定添加标签是ExtJS而不是浏览器?
    【解决方案2】:

    您正在传递一个无效的 Json 字符串。我在一开始就留下了问题,因为您可能没有将完整的 Json 字符串添加到您的问题中,我只在您粘贴的内容中突出显示:

    'change': function(fb,v){
    

    这是无效的 Json。从您工作的响应中删除 javascript 以获得有效的 Json 字符串。

    【讨论】:

      【解决方案3】:

      JSON 的正确标头是

      Content-type: application/json
      

      【讨论】:

        猜你喜欢
        • 2012-06-14
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多