【问题标题】:PHP ajax returns duplicate from external PHP filePHP ajax 从外部 PHP 文件返回重复项
【发布时间】:2016-04-07 16:34:19
【问题描述】:

我到处寻找这个问题的答案,希望有人可以帮助我。我有以下 ajax/JS 代码,以及我在下面调用的外部 PHP 文件,然后是 index.php 页面来显示结果。

此代码适用于我的外部 php 文件。它从 MySQL 数据库中获取发布的数据返回并在#show div 中显示内容。本质上,我正在查询 MySql 数据库以获取主机详细信息(ip、ma​​c 等)。这一切都可以在没有页面刷新的情况下返回。问题和我的问题是,当我再次使用另一个代码提交表单时,结果再次返回但附加到先前的结果中。问题:我该如何避免这种情况?!我已经研究过缓存和清除 Ajax 变量(内容)并清空 PHP 页面,但在让先前的 Ajax 调用清除另一个提交时运气为零。这是我的ajax代码的问题吗?还是我需要在 PHP 方面清除一些东西?

一般来说,我对 ajax 比较陌生,但了解脚本如何检索信息。在我将结果刮回到我的 index.php 页面后,有没有办法刷新外部 php 文件以转储上一篇文章?

    <script type="text/javascript">
              $(function() {
                    $(".submit_button").click(function() {
                        var textcontent = $("#content").val();
                        var dataString = 'content='+ textcontent;
                             $.ajax({
                            type: "POST",
                            url: "HOST_gethost.php",
                            data: dataString,
                            success: function(html){
                            $("#show").after(html);
                            document.getElementById('content').value='';
                });
                }
                return false;
                });
            });
    </script>

提前谢谢!!

编辑更多细节,因为我仍然遇到同样的问题:after(data) 有效,而 html(data) 无效。对于我的一生,尤其是在马克解释了这两个函数之后,我无法弄清楚为什么一个会起作用而另一个不是 html(data) 的返回只是空白,调试中也没有任何内容。

JS代码:

<script type="text/javascript">
          $(function() {
                $(".submit_button").click(function() {
                    var textcontent = $("#content").val();
                    var dataString = 'content='+ textcontent;
                         $.ajax({
                        type: "POST",
                        url: "HOST_gethost.php",
                        data: dataString,
                        success: function(data){
                        $("#show").html(data);
                        document.getElementById('content').value='';
            }
            });
            return false;
            });
        });
</script>

PHP 外部文件:

<?php

$conn = mysql_connect('','','') or die (mysql_error);
$db=mysql_select_db('blah', $conn) or die (mysql_error);


$content=$_POST['content'];
$fetch= mysql_query("SELECT * FROM blah.blahblah WHERE hostname LIKE     '%$content%'  ");
$row=mysql_fetch_array($fetch);

?>

<div class="showbox"> 
    <table>
        <th>Attributes</th><th>Details</th>
        <tr><td>Name</td><td><?php echo $row['hostname']; ?></td></tr>
        <tr><td>Last Known IP</td><td><?php echo $row['ipv4']; ?></td></tr>
        <tr><td>Last Known User</td><td><?php echo $row['username']; ?></td>    </tr>
        <tr><td>Last Seen</td><td><?php echo $row['updated']; ?></td></tr>
        <tr><td>Protection</td><td><?php echo $row['encryption_status']; ?></td></tr>
        <tr><td>Firewall</td><td><?php echo $row['firewall_explanation']; ?></td></tr>
    <tr><td>Script Policy</td><td><?php echo $row['policy']; ?></td></tr>
    <tr><td>GPO Check-in</td><td><?php echo $row['gpo']; ?></td></tr>
</table>

 </div>

【问题讨论】:

    标签: php jquery html mysql ajax


    【解决方案1】:

    使用

    $("#show").html(html);
    

    而不是

    $("#show").after(html);
    

    【讨论】:

    • 当我更改您建议的单行时,它会中断通话。当我把它改回 $("#show").after(html);它再次正常工作:/
    • 尝试替换这两行:"success: function(data){ $("#show").html(data);"
    • 还是一样的结果。导致追加的命令是什么?
    • 如果我将两行都更改为数据并保留after 它可以工作:成功:function(data){$("#show").after(data);} After 必须是追加?
    • 这两种情况都有效。 "$("#show").after(data)" - 在“show” div 之后添加您的结果,当您再次单击时 - 它再次在“show” div 之后添加您的结果(旧文本仍然存在)。当你使用 "$("#show").html(data)" - 它用你的 "data" 替换 "show" div 的所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2015-04-12
    相关资源
    最近更新 更多