javascript - 使用 PHP 仅替换 <form> 提交按钮中的(当前)<div> 内容

标签 javascript php jquery html

我有一个“索引”页面,当按下导航栏中的任何按钮时,它会替换“mainContents”。

这样我就可以只重新加载需要的内容,并保持页眉、导航栏和页脚静态。

这在我的“search.html”页面(加载到#mainContents 中)给我带来了麻烦。

search.html 有一个表单,它(将)通过 PHP 调用一些 sql 查询。当我最初设计这个网页时,我让它跨越了多个页面;每次重新加载页眉、页脚等。所以我只是用新的“php”内容重新加载了整个页面(这将是一个填充有数据的表格)。

现在“search.html”位于“index.html”页面的#mainContents 内,当按下“go/submit”按钮时,整个页面会重新加载,我会丢失页眉和页脚。 ..

我已经这样做了一段时间了,但我不知道如何让它发挥作用。

我会包括相关的页面/脚本(虽然看起来有点多,但我希望你有可用的信息)

Index.html(主页):

  <!DOCTYPE html>
  <head>
     <title>NoteVote</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css">
     <link rel="stylesheet" href="./NV_home.css">
     <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

     <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
  </head>
  <body>

  <div data-role="page" id="noteVote"> 
     <!-- HEADER -->
     <div data-role="header" align="middle" class="header">
        <img src="images/banner_post_it.png" align="middle" alt="Banner Image" height="100" width="250"/>
        <!-- NAVBAR -->
        <div data-role="navbar" data-grid="c" id="navBar">
           <ul>
              <li><a class="ui-btn" id="coursesButton">Courses</a></li>
              <li><a class="ui-btn" id="searchButton">Search</a></li>
              <li><a class="ui-btn" id="submitButton">Submit</a></li>
              <li><a class="ui-btn" id="accountButton">Account</a></li>
           </ul>
        </div>
        <!-- /NAVBAR -->
     </div>
     <!-- /HEADER -->

     <!-- 
        This is the MAIN section.
        This is where the contents will be replaced
     -->
     <div data-role="content" class="ui-content" id="mainContent">
                 Site-related text.
     </div>
     <!-- /MAIN -->

     <!-- FOOTER -->
     <div data-role="footer" class="footer">
        This is the footer.
     </div>
     <!-- /FOOTER -->

  </div>
  <!-- /INDEX -->
  <script src="./scripts/navScript.js"></script>
  </body>
  </html>

navScript.js 是导致导航按钮仅替换#mainContents 的脚本:

  $(document).ready(function() {
      // Actual script includes code for each nav-bar button.
      $("#searchButton").on("click", function(e) {
          e.preventDefault();
          $("#mainContent").load("./pages/search.html");   
  });

然后是仅替换 #mainContent 的“search.html”。 (这是它变得困惑的地方,因为我已经尝试了几种方法让它按照我想要的方式工作):

  <!DOCTYPE html>
  <html>
  <head>
     <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
     <div class="main" data-role="content" id="main">
        <div id="holder">
           <h1>Search</h1>
            <div class="left">
              <form id="searchForm">
                 <b>Course:</b>
                 <select name="course">
                    <option value="*">All</option>
                    <option value="COMM2216">COMM-2216</option>
                    <option value="COMP2121">COMP-2121</option>
                    <option value="COMP2510">COMP-2510</option>
                    <option value="COMP2526">COMP-2526</option>
                    <option value="COMP2714">COMP-2714</option>
                    <option value="COMP2721">COMP-2721</option>
                 </select>

                 <p>
                 Type:
                 <input type="radio" name="type" value="lec">Lecture
                 <input type="radio" name="type" value="lab">Lab
                 <input type="radio" name="type" value="*" checked>Both

                 <p>
                 <input type="submit" value="Go" id="searchGoButton">
              </form>
            </div>
        </div>
     </div>
     <script src="./scripts/searchGo.js">
     </script>
  </body>
  </html>

最后“searchGo.js”是应该强制仅更改“search.html”页面的代码( #mainContent 中),以便页眉、页脚等保持存在。

  $(document).ready(function() {
            $("#searchForm").submit(function(e)
            {
              e.preventDefault();
              $.ajax({
                 type: "POST",
                 url: "./scripts/php_test.php",
                 data: "blah",
                 success: function(){
                    $("#holder").load("../pages/account.html");
                 }
              }) ;
           } );

这只是一个示例/测试,看看它是否可行;但它会重新加载整个页面。

我的意图是 searchGo.js 将加载一个将调用 sql 查询的 .php 脚本,并填充一个表并将 #mainContent div 替换为它的

再次,我为所有代码道歉,如果我的问题含糊不清......我完全被难住了,非常感谢任何帮助。我的替代方案是重新加载每个页面的导航栏和标题;如果没有人可以提供帮助,我将尽快求助。

我们非常欢迎任何关于完成此任务的替代方法的建议。

最佳答案

尝试加上onsubmit="return false;"在搜索表单标签上。问题是您没有覆盖默认的提交按钮表单行为。这就是您的表单提交刷新整个页面的原因。

像这样:

  <form onsubmit="return false;">
      <input id="submitButton" type="submit" />
  </form>

你可以像这样调用你的搜索函数

  $(document).ready(function() {
    $('#submitButton').on('click', function() {
      console.log('Form submitted');
      console.log('Ajax call');
      console.log('Insert returned data');
    });
  });

Js bin link

关于javascript - 使用 PHP 仅替换 <form> 提交按钮中的(当前)<div> 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552865/

相关文章:

javascript - 使用 d3 对多个国家进行缩放和居中

javascript - 如何将多选框的值发送到django后端

php - SQL:如何在 SQL 中过滤 (WHERE) 联接 (ON) 表?

jQuery textarea 值不转换换行符

javascript - 使用 Protractor 从数组测试中获取数据

javascript - 为什么选择更改方法不起作用?

php - 未定义索引 : PHP form error?

php - 在1-1关系中,为什么我的插入在两个表中插入两条记录?

javascript - 如何从 jQuery 中的同级 div 元素检索一些文本

javascript - 如何动态阅读RSS