0

现在我有两个网络服务;一个是我的主应用程序,另一个是返回 JSON 数据。我正在尝试根据作为对帖子的响应而获得的 JSON 数据中的值显示/隐藏 div。添加此逻辑的最佳方式/位置是什么/在哪里?这是我到目前为止的一些代码。ajax 调用工作正常,我能够根据响应呈现消息,但我不确定基于 ajax 响应显示/隐藏 div 的逻辑。谢谢。

控制器动作:

def checkItemProperty() {
  def service = new MyService()
  def itemInstance = new Item(params)
  String itemProperty = itemInstance.itemProperty

  if (service.checkItemCondition(itemProperty)) {
    render "Property is true"
  }
  else {
    render "Property is false"
  }
}

gsp 头部片段:

<g:javascript library="jquery" />
<g:javascript>
  $(document).ready(function() {
    $("#showHideDiv").hide();
    $("#someClickableLink").click(function(){ $("#showHideDiv").show(); });
  });
</g:javascript>

gsp 正文片段:

<g:formRemote name="testForm" url="[action:'checkItemProperty']" update="[success: 'message', failure: 'error']">
  <g:textField name="itemProperty" value="${itemInstance?.itemProperty}" />
  <g:actionSubmit type="submit" name="add" value="Check" />
  <span id="message"></span>
  <span id="error"></span>
</g:formRemote>

<div id="showHideDiv">...</div>

编辑: 服务方法:

def checkItemCondition(String itemProperty) {
  def test = new RESTClient('http://localhost:8081/test/')
  def testResponse = test.post(path : 'test.json', body : [status:itemProperty, source:'httpbuilder'], requestContentType : URLENC)
  def jsonObject = testResponse.getData()
  return jsonObject['itemResponse']
}

编辑: 我如何为上述控制器操作构建 JSON 数据:

def test = [:]
test.value = true
test.text = 'Property is true'
render test as JSON
4

2 回答 2

5

您必须更改控制器:

控制器:

render [value: true, text: "Property is true"] as JSON

或者

render [value: false, text: "Property is false"] as JSON

GSP(删除update属性):

<g:formRemote ... onSuccess="handleResponse(data)">

JavaScript:

function handleResponse(data) {
$("#message").html(data.text);
if (data.value) {
 $("#showHideDiv").show();
}
else {
 $("#showHideDiv").hide();
}
}
于 2013-05-22T18:35:52.900 回答
0

在没有看到您现有的帖子的情况下,我可以近似:

$.post(yoururl, yourdata, function(postresultdata){
     $("#showHideDiv").show();
});
于 2013-05-22T18:30:35.847 回答