我在spring控制器文件中定义了一个名为“buttonpressed”的modelview对象,我需要访问ftl(freemarker)文件中的modelview对象,该文件作为abcd.java等控制器的视图返回
abcd.java控制器代码如下
if (questionAnswer.getAnswerId() == 1045)
{
modelAndView.addObject("buttonPressed","You have been added in mailing list");
modelAndView.setViewName("enterCode_nextSteps");
}
else
{
modelAndView.addObject("buttonPressed","Not added in the mailing list");
modelAndView.setViewName("enterCode_nextSteps");
}
下面的ajax函数目前工作正常,但我不知道如何在这个ajax函数中访问名为“buttonpressed”的对象。我写的方式与下面提到的方式类似,但当我点击提交链接时,它不会调用“partner.do”并且还会抛出错误,说#buttonPressed是unfind(但在下面的脚本中工作正常,并调用“partner.do”和甚至发布数据)
来自javsscript代码的问题是我的意思是由于错误使用 “buttonPressed”或者可能是spring controller abcd.java文件中的问题。
<div class="partnerOptInBox">
<div id="optInContent">
<form name="partnerOptIn">
<h4>Want the Latest</h4>
<p class="pad10Top">${partnerOpt.translation}</p>
<div class="pad10Top">
<input type="radio" name="questionAnswer['${partnerOpt.questionId}']" value="${partnerOpt.getAnswers()[0].answerId}" class="radioButton" /> <label for="questionAnswer['${partnerOpt.questionId}']" class="formLabel pad20Right">Yes</label> <input type="radio" name="questionAnswer['${partnerOpt.questionId}']" class="radioButton" value="${partnerOpt.getAnswers()[1].answerId}" /> <label for="questionAnswer['${partnerOpt.questionId}']" class="formLabel">No</label>
</div>
<div id="optInError" class="formError" style="display:none;">Oops... your request did not go through, please try again.</div>
<div class="pad15Top">
<a href="javascript:submitOptIn();"><img src="images/theme/btn_opt_in_submit.gif"/></a>
</div>
</form>
<script type="text/javascript">
function submitOptIn() {
$('optInError').hide();
dataString = $('#partnerOptIn').serialize();
$.ajax({
data: dataString,
url: "partnerOpt.do",
timeout: 30000,
type: "POST",
success: function(html){
var newHtml = "<h4>Thank you</h4><p>We appreciate your time to respond to our request.</p>";
$('#optInContent').html(newHtml);
},
*/trying this code for sucess is throwing me an error /*
<!-- buttonpressed function-->
success: function(html){
$('#optInContent').html(${buttonPressed});
},
<!-- buttonpressed function-->
error: function(){
$('#optInError').show();
}
});
}
</script>
答案 0 :(得分:0)
假设显示的HTML代码是可以访问abcd.java
模型的视图的一部分,当您在其上调用${buttonPressed}
时,需要将$('#optInContent').html()
括在引号中,因为它是一个字符串。
答案 1 :(得分:0)
或者如果它不起作用,那么您可以在页面顶部输出javascript变量 稍后使用DOM读取,
var buttonpressed = $ {buttonPressed},但我认为上述解决方案可行。但一般来说,如果你在页面中有很多javascript工作并需要后端数据,这种方法效果最好 而且你不想做AJAX调用。