Ajax 在GWT web应用程序中加载和保存JSON文件

Ajax 在GWT web应用程序中加载和保存JSON文件,ajax,json,gwt,Ajax,Json,Gwt,我们正在使用Python webapp2 web服务器开发一个GWT web应用程序。此时,我们希望在web应用程序中加载和保存文件。我们无法使用Flash完成此任务 拯救 当前的方法是使用目标“\u blank”使用表单上载,并设置正确的MIME以使浏览器下载文件。此解决方案可行,但由于webapp2 Web服务器不支持流式传输(因此浏览器无法在短时间内验证mime类型),因此每次都会打开一个新的浏览器窗口。是否有更好的解决方案,例如使用iFrame 装载 再次使用表单上传和解析响应(JSON

我们正在使用Python webapp2 web服务器开发一个GWT web应用程序。此时,我们希望在web应用程序中加载和保存文件。我们无法使用Flash完成此任务

拯救

当前的方法是使用目标“\u blank”使用表单上载,并设置正确的MIME以使浏览器下载文件。此解决方案可行,但由于webapp2 Web服务器不支持流式传输(因此浏览器无法在短时间内验证mime类型),因此每次都会打开一个新的浏览器窗口。是否有更好的解决方案,例如使用iFrame

装载

再次使用表单上传和解析响应(JSON)。我们使用内容类型“text/html;charset=UTF-8”。此解决方案在IE9中运行良好,但在Chrome和FireFox中不起作用。看起来,JSON响应在某种程度上被破坏了,或者在从表单上传响应解析JSON响应时是否存在任何问题?我们使用piriti进行JSON(反)序列化。

对于加载,您可以使用库,它具有将Java对象编码或解码为JSON的功能:

import javax.ws.rs.POST;
...
public interface PizzaOrderCodec extends JsonEncoderDecoder<PizzaOrder> {
}

// GWT will implement the interface for you
PizzaOrderCodec codec = GWT.create(PizzaOrderCodec.class);

// Encoding an object to json
PizzaOrder order = ... 
JSONValue json = codec.encode(order);

// decoding an object to from json
PizzaOrder other = codec.decode(json);
导入javax.ws.rs.POST;
...
公共接口PizzaOrderCodec扩展了JSONECoder{
}
//GWT将为您实现该接口
PizzaOrderCodec codec=GWT.create(PizzaOrderCodec.class);
//将对象编码为json
比萨饼订单=。。。
JSONValue json=codec.encode(顺序);
//将对象从json解码为
PizzaOrder other=codec.decode(json);
为了保存,如果您必须使用文件上载发送JSON文件,您可以看到以下链接:

祝你玩得愉快