为什么jQuery getJSON函数在页面重定向而不是直接调用时执行?

问题描述:

我有一个JSP页面,随后调用几个jQuery.getJSON()函数。我呈现一些图表和所有作品都很好。用户点击一个菜单项(URL)来调用这个JSP页面。为什么jQuery getJSON函数在页面重定向而不是直接调用时执行?

的的getJSON功能和处理脚本执行中$(document).ready(function()...

然而,当登录后,用户被重定向到同一个页面,该功能将无法执行。我认为我必须在Ajax或jQuery方面缺少一些基本的东西,但是在几个小时的网络拖网之后我找不到答案。

这里的JSP文件:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %> 
<%@ taglib uri="/tags/struts-html" prefix="html" %> 
<%@ taglib uri="/tags/struts-logic" prefix="logic" %> 
<%@ page import="org.apache.struts.Globals" %> 
    <% 
    /* 
    * Dashboard Main Page 
    * 
    * Version History: 
    * 
    * Initial version.  
    * 
    */ 
    %>  

<html:html locale="true"> 

<%@include file="/pages/include_skillsauction_header.html"%> 

<body> 

<head> 
    <script language="javascript" type="text/javascript"> 

     function changeDivHTML() 
     { 
     document.getElementById('chart-container-1').innerHTML = "<img src='/apvbase/img/ajax-loader.gif'/>"; 
     } 
    </script> 

<script type="text/javascript" src="../../js/jquery.js"></script> 
<script type="text/javascript" src="../../js/highcharts.js"></script> 
<script type="text/javascript" src="../../js/themes/grid.js"></script> 

<script> 
$(document).ready(function() 
{ 
$(function() 
{ 

// --- 
    $.getJSON('../../JScriptUtils.do?method=getProjectRisks', function(arr) 
    { 
     chartRisks = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'chart-container-1', 
      defaultSeriesType: 'column', 
      borderWidth: 2 
     }, 
    title: { 
      text: 'Project Risk Profile' 
     }, 
    subtitle: { 
     text: 'All Open Risks by Project' 
     }, 
    tooltip: { 
     formatter: function() { 
      return ''+ 
       this.x +': '+ this.y +' logins'; 
     } 
     }, 
    xAxis: 
    { 
     categories: arr.name, 
     labels: { 
       rotation: -45, 
       align: 'right', 
       style: { 
        font: 'normal 8px Verdana, sans-serif' 
      } 
    }},  
    yAxis: { 
       min: 0, 
       max: 50, 
       title: { 
        text: 'Risks' 
       }, 
       tickInterval: 10 
      }, 
     series: [ 
     { data: arr.data, 
      dataLabels: { 
       enabled: true, 
       formatter: function() { 
       return this.y; 
       } 
      }, 
     name: 'Risks Raised' 
    } 
     ] 
     }); 
    }); 

// +++ 
}); // function() 
}); // ready() 

</script> 
</head> 
<div id="document"> 

    <%@include file="/pages/include_recruiter_header.jsp"%> 

<div id="main"> 

    <div id="content-section"> 
     <div id="contentsNoSideBar"> 
     <!-- Display Login details --> 

     <h2><bean:message key="recruiter.provFeedback.heading"/></h2>   
    <p> 
    <table> 
    </tr> 
     <td> 
     <div id="chart-container-1" style="width: 34%; height: 300px"></div> 
     </td> 
    </tr> 
    </table> 
     </div> 
    </div> 
</div> 
<div id="siteInfo"> 
     <%@include file="/pages/include_standard_footer.jsp"%> 
</div> 
</div> 

<script> 
// Display the spinner icon until ready .. 
    changeDivHTML(); 
</script> 
</body> 

</html:html> 

任何帮助是极大的赞赏。

+2

这可能是最好的,如果你显示有问题的代码。 – 2011-05-09 12:15:18

+0

您是否在登录后使用SSL(https)? – Simeon 2011-05-09 12:31:49

+0

@Pekka和@Simeon - 感谢您的回复。这是JSP文件。如前所述,如果直接调用所有作品都很漂亮。只有当我从我的(java struts)操作类重定向到挂起的这个页面时。无论SSL与否,行为都是相同的。由于这里的编辑面板没有足够的空间,我无法包含文件! – Ganztoll 2011-05-09 21:26:51

好的 - 是的,这是因为上下文路径被硬编码。为了解决这个问题,我用../js/jquery.js替换了所有的参考文件src="<%=request.getContextPath()%>/js/jquery.js">

现在,它工作..hope我没有浪费任何人的时间。