我在play framework
开发了一个应用程序,用于将上传的csv
文件转换为json
格式。
由于这是一个Web服务,我需要的是创建一个客户端html页面,上传文件并使用我的Web服务将其转换为json
格式。
但是,通过使用ajax
,getjson
或$.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)
攻击。
有什么方法可以解决我的问题吗?
答案 0 :(得分:0)
更新: 解: 在客户端:客户端希望发送结果页面以显示结果。假设它是result.jsp。
在result.jsp中,获取参数值并显示。
In the server side : redirect the result to the page sent by the client.
我为此使用了iframe,通过上述方法,可以从没有跨域问题的iframe中读取值。