2013-09-25 22 views
0

我有一个带有两个输入框的窗体。歌曲和艺术家。当按下搜索按钮时,它使用.post()的JQuery函数将数据发布到PHP页面并将结果返回到页面。JQuery .post()将html返回到表

这里是我的JavaScript代码:

<script> 
    $(function() { 

     $("#submitSearch").bind("click", function() { 
      var songTitle = $("#song").val(); 
      var artistName = $("#artist").val(); 

      $.post("getSearchResults.php", { 
       artist: artistName, 
       song: songTitle 
      }, 
      function(data, status) { 
       $("#searchResults tbody").last().append(data); 
      }); 
     }); 
    }); 
</script> 

的目标是把结果放到了“SearchResult所”表的<tbody>

<table id="searchResults"> 
    <thead> 
     <tr> 
      <th>Title</th> 
      <th>Artist</th> 
      <th>Album</th> 
      <th>Add To List</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

但是,它似乎没有将结果插入表中。

直到我把一个alert()消息放在Javascript代码中,它才显示它。

<script> 
    $(function() { 

     $("#submitSearch").bind("click", function() { 
      var songTitle = $("#song").val(); 
      var artistName = $("#artist").val(); 

      $.post("getSearchResults.php", { 
       artist: artistName, 
       song: songTitle 
      }, 
      function(data, status) { 
       $("#searchResults tbody").last().append(data); 
      }); 

      alert("test"); 

     }); 
    }); 
</script> 

当我关闭“测试”警报时,它会将结果放入表格中,并很快消失。

我在这里错过了什么?请帮帮我!我很难过。提前致谢。

+1

是否有任何其他JavaScript引用'#searchResults'? – Pete

+0

我的猜测是:其他一些代码会干扰你的表格。你有其他的JavaScript代码与桌子混乱吗? – LeGEC

+0

不,在JS代码中只有一个引用'$(“#searchResults”)'和上面显示的地方。 – Turp

回答

2

尝试......

<script> 
    $(function() { 

     $("#submitSearch").bind("click", function(e) { 
      e.preventDefault(); 
      var songTitle = $("#song").val(); 
      var artistName = $("#artist").val(); 

      $.post("getSearchResults.php", { 
       artist: artistName, 
       song: songTitle 
      }, 
      function(data, status) { 
       $("#searchResults tbody").last().append(data); 
      }); 
     }); 
    }); 
</script> 

我添加了一个事件参数的点击功能,和e.preventDefault()。这会停止实际发生的提交,这正在重新加载您的页面。另外,根据您使用的是哪个版本的jQuery,您可能需要使用on()而不是bind()。 (它与上面的语法完全相同。)

+0

是的,工作。非常感谢您的帮助。这是有道理的。文本框和输入按钮位于'

'标签内,因此它确实有意义。 – Turp

+0

没问题 - 很高兴帮助:) – Archer

+0

弓箭手 - 接受的答案。谢谢,我知道它必须是简单的!感谢像您这样的其他开发者社区。使它成为一个伟大的日子! – Turp