0

我在 spring 控制器文件中定义了一个名为“buttonpressed”的模型视图对象,我需要在 ftl(freemarker) 文件中访问该模型视图对象,该文件作为视图从像 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是未定义的(但在下面的脚本中它工作正常并调用“partner.do”和甚至发布数据)

那么这个问题来自javsscript代码,我的意思是由于“buttonPressed”的使用不正确,或者可能是来自spring控制器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>
4

2 回答 2

0

或者,如果它不起作用,那么您可以在页面顶部输出为 javascript 变量并稍后使用 DOM 读取,

var buttonpressed = ${buttonPressed},但我认为上述解决方案可行。但通常,如果您在页面中有大量 javascript 工作并且需要后端数据并且您不想进行 AJAX 调用,则这种方法通常效果最佳。

于 2009-08-27T03:11:34.387 回答
0

假设显示的 HTML 代码是可从中访问模型的视图的一部分,则在调用它时abcd.java需要用引号引起来,因为它是一个字符串。${buttonPressed}$('#optInContent').html()

于 2009-08-26T16:46:48.107 回答