Я пытаюсь разрешить пользователю загружать свои файлы Excel, после этого серверная часть преобразует его в формат html и, предположим, поместит его в iframe src, чтобы разрешить предварительный просмотр в браузере.
Теперь я пытаюсь вызвать функцию get path для установки iframe src во время готовности страницы, но, похоже, не работает.
<portlet:actionURL var="checkworkbook" name="checkWorkbook"></portlet:actionURL>
<b>Please Upload a Document</b>
<form name ="UploadExcelForm" action="<%=checkworkbook%>" method="post" enctype="multipart/form-data">
<input type="file" id="uploadedFile" name="uploadedFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
<button type="button" onclick="<portlet:namespace />uploadExcel()"> submit </button>
</form>
<div id="displayArea">
<iframe id="displayExcel" src="" weight=800 height=400>Please Upload a file</iframe>
</div>
Вот часть ajax
function <portlet:namespace />uploadExcel() {
if ($('#uploadedFile').val() == null) {
alert("Please choose a file!");
return false;
}else{
document.UploadExcelForm.submit();
}
}
$(document).ready(function(){
<portlet:namespace />getDisplayPath();
});
function <portlet:namespace />getDisplayPath() {
var url = '<%=urlForAjax%>';
/*Make ajax call*/
$.ajax({
type : "POST",
url : url,
data: {
portletAction : "getDisplayPath"
},
success : function(data)
{
var obj = jQuery.parseJSON(data);
if(obj.jsonPath !=null){
var json = JSON.parse(obj.jsonPath);
$("#displayExcel").attr('src',obj.jsonPath);
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
/*Write you error-handling logic here*/
}
});
}
Более того, я пытаюсь использовать функцию uploadExcel (), чтобы убедиться, что пользователь выбрал файл перед загрузкой, но это не работает, почему?
Я провел дополнительное тестирование и обнаружил, что, возможно, проблема в получении JSON, поэтому я вставляю свой внутренний код здесь.
if ("getDisplayPath".equalsIgnoreCase(ajaxAction)){
String jsonPath = this.displayPath;
JSONObject json = JSONFactoryUtil.createJSONObject();
json.put("jsonPath", jsonPath);
response.getWriter().write(json.toString());
}