Jquery 包含的javascript文件中的liferay资源

Jquery 包含的javascript文件中的liferay资源,jquery,ajax,liferay,portlet,spring-portlet-mvc,Jquery,Ajax,Liferay,Portlet,Spring Portlet Mvc,当我使用此选项时: <portlet:resourceURL var="ajaxURL" id="ajax" escapeXml="false" /> $.ajax({ method : "POST", url : "${ajaxURL}", data : { ... 我的问题是如何将资源url传递给包含的javascript,或者如何在javascript中生成它 我试过: var urlVar='' 当我以这种方式使用url

当我使用此选项时:

<portlet:resourceURL var="ajaxURL" id="ajax" escapeXml="false" />


 $.ajax({
    method : "POST",
        url : "${ajaxURL}",
        data : {
    ...
我的问题是如何将资源url传递给包含的javascript,或者如何在javascript中生成它

我试过:
var urlVar=''

当我以这种方式使用urlVar时:

$.ajax({
method : "POST",
    url : urlVar,
    data : {
...

它不起作用。有人知道如何解决这个问题吗?谢谢

我可以为您想出两个选择

要在JavaScript文件中使用JSP标记和EL,需要从JSP提供服务。我以前在portlet中通过使用
serveResource
方法为JavaScript文件提供服务来实现这一点。这样,您就可以在JavaScript JSP中使用相同的portlet标记

在portlet JSP中

<portlet:resourceURL var='portletJS' id='javascriptResourceID' />
<script type='text/javascript' src='${portletJS'></script>
<script type='text/javascript'>
    var portletAjaxURL = '<portlet:resourceURL id="ajax" escapeXml="false" />';
</script>
另一个选项是在portlet中设置JavaScript变量,然后在静态JavaScript文件中使用该变量

在portlet JSP中

<portlet:resourceURL var='portletJS' id='javascriptResourceID' />
<script type='text/javascript' src='${portletJS'></script>
<script type='text/javascript'>
    var portletAjaxURL = '<portlet:resourceURL id="ajax" escapeXml="false" />';
</script>

我可以为你想出两个选择

要在JavaScript文件中使用JSP标记和EL,需要从JSP提供服务。我以前在portlet中通过使用
serveResource
方法为JavaScript文件提供服务来实现这一点。这样,您就可以在JavaScript JSP中使用相同的portlet标记

在portlet JSP中

<portlet:resourceURL var='portletJS' id='javascriptResourceID' />
<script type='text/javascript' src='${portletJS'></script>
<script type='text/javascript'>
    var portletAjaxURL = '<portlet:resourceURL id="ajax" escapeXml="false" />';
</script>
另一个选项是在portlet中设置JavaScript变量,然后在静态JavaScript文件中使用该变量

在portlet JSP中

<portlet:resourceURL var='portletJS' id='javascriptResourceID' />
<script type='text/javascript' src='${portletJS'></script>
<script type='text/javascript'>
    var portletAjaxURL = '<portlet:resourceURL id="ajax" escapeXml="false" />';
</script>

我找到了解决办法。一种方法是在jsp页面上定义资源url,例如:

<portlet:resourceURL var="yourResourceURL" id="yourResource" />
 test(" ${yourResourceURL} ");
在jsp中,调用如下函数:

<portlet:resourceURL var="yourResourceURL" id="yourResource" />
 test(" ${yourResourceURL} ");

它应该会起作用。

我找到了解决办法。一种方法是在jsp页面上定义资源url,例如:

<portlet:resourceURL var="yourResourceURL" id="yourResource" />
 test(" ${yourResourceURL} ");
在jsp中,调用如下函数:

<portlet:resourceURL var="yourResourceURL" id="yourResource" />
 test(" ${yourResourceURL} ");

它应该可以工作。

您可以使用java脚本生成resourceURL

var resourceURL = Liferay.PortletURL.createResourceURL();
resourceURL.setPortletId(86);
resourceURL .setParameter("key2", "value");
resourceURL.toString();

您可以使用java脚本生成resourceURL

var resourceURL = Liferay.PortletURL.createResourceURL();
resourceURL.setPortletId(86);
resourceURL .setParameter("key2", "value");
resourceURL.toString();

假设它是一个jsp页面try url:“我想你也可以直接做。例如url:”,我测试了两个命题,但它们都不起作用。假设它是一个jsp页面try url:“我想你也可以直接做。例如url:”,我测试了两个命题,但它们都不起作用。我还没有测试第一个方法,但第二种方法不起作用,因为javascript变量的作用域范围。因为如果您在脚本标记中声明portletAjaxUrl,然后在这些标记后面导入其他javascript代码,它将无法使用该变量。javascript变量并不局限于声明它们的标记或javascript文件。在标记中,该变量声明将变量放入全局范围,使其在页面上的任何其他位置或其他JS文件或标记中都可用。您可以发布完整的工作示例吗?我还没有测试第一种方法,但第二种方法不起作用,因为javascript变量的作用域范围。因为如果您在脚本标记中声明portletAjaxUrl,然后在这些标记后面导入其他javascript代码,它将无法使用该变量。javascript变量并不局限于声明它们的标记或javascript文件。在标记中,该变量声明将变量放入全局范围,使其在页面上的任何其他位置或其他JS文件或标记中都可用。您可以发布完整的工作示例吗?我不能让它工作。