在 jquery 中访问 Spring MVC 模型对象

Access Spring MVC model object within jquery

这就是我从控制器 return 我的模型对象的方式。

model.addObject("gameSchList", gameSchList);
return model;

我得到的响应是 JSON 输出,因为我使用了 Spring JAXB 实现。 这是我从 Spring 控制器得到的输出。

{
   "gameSchList":
   [
       {
           "team":
           [
               {
                   "alias": "A",
                   "logo": "A_LOGO"
               },
               {
                   "alias": "B",
                   "logo": "B_LOGO"
               }
           ],
           "cName": "AZ",
           "id": "58",
           "type": "game",
           "channel": "713",
           "time": "Sun 13:00PM",
           "status": "pregame"
       }
   ]

}

现在我想在文档就绪函数中访问这个 gameSchList。这是我添加到主页的外部js文件。

现在在 gameinfo.js 中,我创建了一个准备好的函数并尝试使用以下代码访问 gameSchList。我在 js 文件中需要这个要求而不使用 jstl。

$(document).ready(function(){
    var list = ${gameSchList};
    $.each(list, function( index, value ) {
        alert( index + ": " + value );
    });
});

当我调用这个控制器时,它重定向到我的主页并执行这个特定的 gameinfo.js,但它给我这个错误:

SyntaxError: missing ; before statement

我尝试了几种方法,但没有成功。

var list = ${model.gameSchList};
var list = "${model.gameSchList}";

这是一种解决方案,您可以尝试一下。在您的 jsp 中声明以下在服务器端进行评估的内容(确保它在 jsp 中而不是在外部 js 文件中)。

<script type="text/javascript">
 var responseObject= ${gameSchList};
</script>

现在您可以在 js 上访问 responseObject,您可以在 document.ready 函数中使用它。希望这可以帮助。

在服务器上编译的JSP页面上,我们只能在with函数中以JSON格式声明JavaScript对象,该函数会将JSON内容转换为JavaScript浏览器下载并编译此脚本时的对象:

<script>
 var object = JSON.parse('${data}');
<script/>

其他方式通过服务器Ajax请求下载JavaScript对象,浏览器自动将从服务器接收到的JSON内容编译成JavaScirpt对象:

.....
 sendRequest("moderatorBuildingEntrancePage/updateBuildingLabel/ajax",sendData,
     function(event, request, settings) {
           var recievedObject = event.result 
....