我目前正在尝试掌握 AJAX,但在访问模型对象时遇到问题。
我的测试代码的作用是从下拉列表中获取所选值,当按下按钮时,它会将此值传递给 AjaxTest()
,后者将参数附加到模型,但我似乎无法输出模型对象 - 我想知道为什么会这样?
param
肯定有一个值。
<div id="result"></div>
<script type="text/javascript">
var param = document.getElementById("blah").value;
var loadUrl = "/ajax/" + param;
$("#button").click(function(){
$.post(loadUrl, function(data){
alert("Data Loaded: " + data);
$("#result").html("<p>Param: ${output}</p>");
});
});
</script>
@RequestMapping(value = "/ajax/{param}", method = RequestMethod.POST)
public @ResponseBody String AjaxTest(@PathVariable String param, final ModelMap model){
model.addAttribute("output", param);
return param;
}
最佳答案
我认为您对客户端和服务器端有点混淆。 您的 java 看起来是正确的,但您的 js 正在尝试访问 jSTL 表达式( ${output} )。当页面呈现时,jSTL 表达式不会解析,这将在 Ajax 请求/响应发生之前进行。
你的js需要使用变量“data”,它是你的java添加到模型中的数据。像这样的事情:
$("#result).html("<p>Param: " + data.output + "</p>");
这假设模型是 json 希望这有帮助
关于java - 使用 JSTL 访问模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505771/