javascript - 404 未找到 JSON 文件 Liferay

标签 javascript json liferay

在常规 HTML 页面中一切顺利,但在 liferay portlet 中使用相同的代码时,我遇到了这个问题:

获取 http://localhost:8080/web/guest/data/myfile.json 404(未找到)index.js:103

这是代码:

function loadFiles(){

    loadJSONNetworkInventory(function(response) {

        parsedMyFile = JSON.parse(response);

    });
}


function loadJSONNetworkInventory(callback) {   

    var xobjNI = new XMLHttpRequest();
    xobjNI.overrideMimeType("application/json");
    xobjNI.open('GET', 'data/myfile.json', false); 
    xobjNI.onreadystatechange = function () {
        if (xobjNI.readyState == 4 && xobjNI.status == "200") {
            callback(xobjNI.responseText);
        }
    };
    xobjNI.send(null);  
}

最佳答案

I am not sure, how do you assume that the URL http://localhost:8080/web/guest/data/myfile.json will serve you myfile.json as response when called. Where do you construct that URL and how do you suppose it to work?

嗯,另一种简单的方法是在 portlet 的 docroot 下创建 data 文件夹,然后移动 myfile.json文件在那里。

现在,在您的外部 javascript 文件(您已共享其中的一些代码)的 include 上方,添加以下行:

<script type="text/javascript">
    var portletContextPath = '<%=request.getContextPath() %>';
</script>

并在给定的脚本中进行以下更改:

function loadJSONNetworkInventory(callback) {
    var xobjNI = new XMLHttpRequest();
    xobjNI.overrideMimeType("application/json");
    var jsonFilePath = portletContextPath + '/data/myfile.json';
    xobjNI.open('GET', jsonFilePath, false); 
    xobjNI.onreadystatechange = function () {
        if (xobjNI.readyState == 4 && xobjNI.status == "200") {
            callback(xobjNI.responseText);
        }
    };

    xobjNI.send(null);
}

就是这样! portletContextPath 将用作 JavaScript 变量来获取 Portlet 的动态上下文路径,而 jsonFilePath 将是 myfile.json 的路径。

关于javascript - 404 未找到 JSON 文件 Liferay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35984067/

相关文章:

tabs - 如何在liferay ui选项卡中单击选项卡调用 Controller 方法?

javascript - Flexslider 不可见

javascript - 有没有办法在 Angularjs/javascript 中执行工厂/类的每个方法之前/之后调用函数

javascript - 如何根据匹配参数从数组中选择几个随机 id 值?

javascript - 在 couchdb 的 Javascript 查询中嵌入 JSON

ios - AFNetworking 在 404 Bad Request 仍然获得 JSON 响应后获得 JSON

java - 如何在 iFrame portlet 中嵌入应用程序(通过指定 url)

javascript - 通过跨域 JavaScript 调用防止 CSRF

java - 从 YouTube API 解析 JSON

java - Liferay+ Spring : @ModelAttribute in render method with url parameters