2016-06-28 7 views
0

私は(それがリストを返す)SQLからデータを取得した後、要求属性を設定サーブレットを持っている:GETリクエスト属性は、ファイル

request.setAttribute("statsRegionList", statsRegionList); 

私が持っていますjspファイルにはドロップダウンがあり、ドロップダウンの内容は別のリクエスト属性によってロードされます。 ドロップダウンの選択に基づいて、私は 'statsRegionList'をチェックし、ドロップダウンで選択された領域に一致するその特定のRegionに対して必要な結果を得る必要があります。

いくつかのフォーラムを読んだ後、外部の.jsファイルは要求属性を取得できないと言われました。したがって、これは.jsp自体で設定する必要があります。そこで私は、JSPに設定されている:

<body> 
<script type="text/javascript"> 
    var regionList = <%=request.getAttribute("statsRegionList")%>; 
</script> 

しかしIE上のコンソール上でそれがエラーを示しています SCRIPT1014:無効な文字 ファイル:ダッシュボード、ライン:625、カラム:47 (無効な文字が@であり、それがありますオブジェクトのリストとして挿入されます)。

  • 外部の.jsファイルで 'statsRegionList'にアクセスするにはどうすればよいですか?
  • 人々はAjaxについて言及していますが、使用方法はわかりません。そのためのコードスニペットが役立つはずです。

ありがとうございました。

+0

javascriptの部分では、あなたが正しいjavascriptの構文を確認する必要があります。 'var regionList = ['region1'、 'region2'、 'region3'];'は正しい構文になります。または、statsRegionListがオブジェクトのリストである場合、 'var regionList = {{id:123、name: 'region1'}、{id:125、name: 'region2'}、{id:126、name: 'region3'}} ; 'あなたが'%= request.getAttribute()%> 'を使用する場合、属性にはjavascript構文のリストが含まれている必要があります。 [[''、 ''、 ''] 'または[{}、{}、{}]' – Holger

答えて

1

あなたが正しいです。

解決策が見つかりました。これが私のやり方です。 .external jsファイルは要求属性を読み取ることができないので、私はjspからグローバル変数を作成しました。これにより、.jsファイルでiを使うことができます。要求属性はArrayListを返すため、グローバル変数を作成する際にArray形式にする必要があります。

後は、これが作成されたオブジェクトの配列を確保し

<script type="text/javascript"> 
var regions = [ 
    <c:forEach items="${statsRegionList}" var="region" varStatus="status"> 
    {region: '${region.name}',    Devices : '${region.DeviceCount}'} 
    <c:if test="${!status.last}"> 
     , 
     </c:if> 
    </c:forEach> 
]; 
</script> 

.JSPからコードスニペットです。さらに、外部.jsファイルでは、グローバル変数var領域にアクセスできるようになり、ドロップダウン選択と一致する必要な詳細を見つけるために反復することができます。 .jsoファイルから切り取ら コードは以下の通りです:

dropdownSelect = $("#regionSelect option:selected").text(); 
    var regionsArr = regions; 
      if ($.isArray(regionsArr)){ 
       Object.keys(regionsArr).forEach(function (key) { 
         if(regionsArr[key]['region']== dropdownSelect){ 
          var x=document.getElementById('RegionTable').rows; 
          x[0].cells[1].innerHTML=regionsArr[key]['DeviceCount'];       
         } 
        }); 
      } 
関連する問題