【问题标题】:Jquery refreshes and loads the page with tablejquery刷新并加载带有表的页面
【发布时间】:2012-12-24 08:41:20
【问题描述】:

我的 Jquery 有问题。所以,问题是每当我提交表格并获得结果表时。我的页面刷新,无法在 Jquery 对话框中加载结果。这是我的代码

<script>
    $(function () {
      $("#dialog").dialog({
        autoOpen: false,
        height: 600,
        width: 1000,
        show: "blind",
        hide: ""
      });

      $("#opener").click(function () {
        $("#dialog").dialog("open");
        return true;
      });
    });
</script>

对于我的 html:

<form id="searchtable" >

              <label>Search by Username :</label><input type ="text" name="searchid" style="border: 1px solid black">

                <input  type ="submit" name ="search" id="opener">
                <br>
                <%-- search table --%>
                  Results:
                  <div id="dialog" title="Search Result">
                  <table border ="1" id="normal">
                  <tbody>
                          <tr>
                              <th>ID</th>
                              <th>Username</th>


                          </tr>
                  </tbody>

                  <g:each in = "${example}">
                          <tr>
                              <td>${it.ID}</td>
                              <td>${it.username}</td>

                         </tr>
                  </g:each>
                  </table>
                  </div>

              <%--List Table--%>
               <table border ="1" id="normal">
               <tbody>
                      <tr>
                          <th>ID</th>
                          <th>Username</th>

                      </tr>
                </tbody>
              <g:each in = "${result}">
                        <tr>

                          <td>${it.ID}</td>
                          <td>${it.username}</td>

                        </tr>
              </g:each>
            </table>
    </form>

所以在提交值之后,我需要处理控制器中的值并将其传递回 html 以显示出来。但它只是刷新并且无法加载。所以有人知道该怎么做吗?我只需要在表单提交->刷新->对话框出现结果后加载它。非常感谢你们

【问题讨论】:

  • 不想刷新页面需要使用AJAX提交表单
  • 知道我应该怎么做吗?我确实阅读了 Ajax,但找不到任何与我相似的示例。
  • 不知道为什么您的与任何其他 AJAX 表单提交有任何不同。提交表单并返回您想要的表格 html。使用成功回调将 html 放入需要进入的容器中
  • 你有什么好的例子可以参考吗?我尝试了其他一些但没有成功回调。

标签: jquery html grails gsp


【解决方案1】:

使用 jQuery 的 load() 函数,您可以向预期的控制器发送请求并让它呈现一个 HTML 响应(对话框的内容),该响应将在成功响应时加载到 #dialog 元素中。

<script>
    $(function () {
      $("#dialog").dialog({
        autoOpen: false,
        height: 600,
        width: 1000,
        show: "blind",
        hide: ""
      });

      $('#searchtable').submit( function () {
        var searchId = $('input[name="searchid"]').val();
        $('#dialog').load('/url/to/controller', { "searchid": searchId }, function () {
          $(this).dialog('open');
        });
        return false;
      });
    });
</script>

【讨论】:

  • 您好,感谢您的回答!呃,我可以知道#dialogue 是关于什么的吗?
  • 好的,非常感谢!顺便说一句,路径控制器包括文件夹的完整路径?导致对话框打开并且不呈现代码
  • 控制器的请求 URL。
  • 我没有任何请求 url 到控制器 :\ 。我尝试将我的页面网址放在页面上,它加载了整个页面链接。哦,顺便说一句,我第二次点击后对话框的标题不见了……有什么解决办法吗?
【解决方案2】:

你需要这样的东西:

$(function () {
    $("#dialog").dialog({
        autoOpen: false,
        height: 600,
        width: 1000,
        show: "blind",
        hide: ""
    });

    $("#searchtable").on('submit', function() {
        alert("submit handler has fired");
        $.ajax({
            url: ...,
            data: $(this).serialize(),
            type: ...,
            success: function(html){
                //do something with the `html` returned from the server here
                alert(html);
                $("#dialog").dialog("open");
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert('error: ' + textStatus + ': ' + errorThrown);
            }
        });
        return false;//suppress natural form submission
    });
});

参考jQuery的$.ajax() documentation,你将不得不填补空白。

【讨论】:

  • 对不起类型是什么?阅读文档后我没有任何想法
  • type 应该是“GET”或“POST”。这是将数据打包到请求中的两种方式。您的服务器端代码可能被编写为期望 GET 或 POST 数据。如果有疑问,请先尝试“GET”。
  • 然后,尝试将$("#dialog").dialog("open") 替换为$("#dialog").html(html).dialog("open")
  • 客户端代码正确,可能需要获取正确的 URL。看来您需要修复服务器端的东西,我对此一无所知。我已经帮不上什么忙了。
  • erm,我修复了它,我只是重新创建了另一个页面,其中只有表格。非常感谢你的帮助甜菜根:)
猜你喜欢
  • 2012-11-14
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多