如何上传文件以播放和检索结果

时间:2013-08-06 12:57:32

标签: ajax post iframe file-upload playframework

我在play framework开发了一个应用程序,用于将上传的csv文件转换为json格式。 由于这是一个Web服务,我需要的是创建一个客户端html页面,上传文件并使用我的Web服务将其转换为json格式。

但是,通过使用ajaxgetjson$.post方法,我无法将上传的文件发送到服务器。

我的代码来自客户端html:

function myFunction()
{   
   alert("form data " + $("#form").serialize());
   $.ajax({
        url:"http://mydomain:9999/csvtojson",
        type: 'POST',
        data:  $("#form").serialize(),
        dataType:'json'
    }).done(function (data) {
       alert("data "+data);
       $("#result").html(data); 
    });
}
</script>
</head>
<body>    
      <p>Click the button to trigger a function.</p>
      <form id="form" enctype="multipart/form-data"  method="post"   action="http://mydomain:9999/csvtojson" >
         <input type="file" name="CSVFILE" id="file"/>
         <button type="button"  onclick="myFunction()">Click me</button>
         <div id="result"></div>
      </form>

原因:

$("#form").serialize()为空,表单只包含文件。

我尝试了另一种方法来使用iframe解决此问题。

我将目标json设置为iframe,并在那里成功显示结果。

但是我无法访问iframe中的数据。

由于安全原因,浏览器限制从iframe访问数据,iframe是从不同的远程站点加载的。

这是限制我们的跨域政策。它旨在防止cross site scripting (XSS)攻击。

有什么方法可以解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

更新:      解:       在客户端:客户端希望发送结果页面以显示结果。假设它是result.jsp。

在result.jsp中,获取参数值并显示。

In the server side : redirect the result to the page sent by the client.

我为此使用了iframe,通过上述方法,可以从没有跨域问题的iframe中读取值。