2014-02-12 30 views
0

在extjs4控制器我打电话Extjs4/Spring MVC和response.responseText

form.submit({ 
       url: '/bookstore/api/books/add', 
       waitMsg: 'Uploading your file...', 
       success: this.onAddBookSuccess, 
       failure: function(response, opts){ 
        var data = Ext.decode(response.responseText); 
        Ext.MessageBox.alert('Error', 'Some problem occurred' + data); 
       } 
      }); 

为 '/书店/ API /书籍/添加' 我的Spring MVC控制器代码

@RequestMapping(value = "/api/books/add", method = RequestMethod.POST) 
public 
@ResponseBody 
Map<String, ? extends Object> addUser(BookUploadBean bean, BindingResult result) { 

Map<String, Object> data = new HashMap<String, Object>(); 

if (bean.getTitle().compareTo("1") == 0) { 
    data.put("success", Boolean.FALSE); 
    data.put("errors", "asdasdasd"); 
    return data; 
} 

Book book = new Book(); 
book.setTitle(bean.getTitle()); 
book.setAuthor(bean.getAuthor()); 
book.setYear(bean.getYear()); 
book.setPrice(bean.getPrice()); 
book.setDescription(bean.getDescription()); 
book = userRepository.save(book); 

data.put("success", Boolean.TRUE); 
return data; 
} 

我从拿到' /书店/ API /书籍/添加” JSON响应的2个变种:

  1. 错误JSON:{ “错误”: “asdasdasd”, “成功”:假}
  2. 成功JSON { “成功”:真正}
    和服务器返回真值这个
    enter image description here

但如果我尝试让response.responseText,我得到了一个未定义的值。我如何在失败函数中获得“错误”值?

回答

1

当你提交一个表单时,你得到的响应仍然被解码为回调的第二个参数的属性“结果”。

form.submit({ 
    url: '/bookstore/api/books/add', 
    waitMsg: 'Uploading your file...', 
    success: this.onAddBookSuccess, 
    failure: function(form, action){ 
     Ext.MessageBox.alert('Error', 'Some problem occurred' + action.result.errors); 
    } 
}); 

希望这有助于:)

在你的榜样

所以