2014-11-04 51 views
0

我在对话框中以我的表单提交文件。文件上传表单在成功时不会成功

它被正确提交;该文件通过我提供的URL在服务器上完美无缺。

根据API description我应该在响应中提供一个'成功'=真如果一切正常在服务器上。这是我做的,这是我看到回来:

enter image description here

这是我的代码如下所示。不过,即使我返回成功=真,它总是去案件Ext.form.action.Action.SERVER_INVALID

frm.submit({ 
    url: URLs.fileUploadURL, 
    waitMsg: 'Uploading file...', 
    success: function(form,action){ 
     alert('Success', 'Processed file on the server'); 
    }, 
    failure: function(form, action) { 

     alert('FAIL : action.failureType ' + action.failureType) 

     switch (action.failureType) { 
      case Ext.form.action.Action.CLIENT_INVALID: 
       Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values'); 
       break; 
      case Ext.form.action.Action.CONNECT_FAILURE: 
       Ext.Msg.alert('Failure', 'Ajax communication failed'); 
       break; 
      case Ext.form.action.Action.SERVER_INVALID: //Always goes here :(
       Ext.Msg.alert('Failure', action.result.msg); 
     } 
    } 
}); 

我不明白这一点。 成功=真是否意味着成功回调将被称为?

关于'文件上传'的Extjs文档真的很残酷。 ExtJS in Action包含大约一行关于它的内容。我主要通过反复试验得到了我的位置,并且花了好几天的时间。那里有其他文件吗?也许有几页详细说明如何使用'文件上传器'?

+0

也许问题出在了错误的JSON上,它被返回。我看到返回的是具有“成功”和“味精”属性的对象,但它们之后的东西是......另一个嵌套对象? – 2014-11-04 13:19:55

+0

是的,它更多的东西多数民众赞成并不重要。这是不允许的? – 2014-11-04 13:25:52

+0

它可以以某种方式防止触发时发生“成功”事件(即解析器在中途停顿)。试着改变它,你肯定会知道。 – 2014-11-04 13:27:08

回答

2

问题出在从服务器接收到不正确的JSON。删除“文件”周围的大括号,它会起作用。