【问题标题】:Ajax call returns same resultAjax 调用返回相同的结果
【发布时间】:2017-06-26 14:47:00
【问题描述】:

我有一个 jquery 模态按钮,我想在其中显示来自我的数据库的信息。

我在数据库中有一个字段,我希望通过它识别所有内容,称为“数字” 模态按钮显示在一个表中,该表已经从显示所有条目的 SQL 查询中循环

while ($row = getarray($res)){

    <tbody>
    <tr>
    <td> <? $row["state"] ?> </td>
    <td><? $row["number"] ?></td>
    <td>
    <button type="button" class="btn btn-primary" onclick="detailsmodal(<?
    $row["number"])">Description</button>
  </td>
  </tr>


<!-- Modal Button -->
<button type ="button" class="btn btn-primary" onclick="detailsmodal(<?= $row['number']; ?>)>Modal Button</button>
<!-- Code for modal -->
<?php
$number =$_POST["number"];
$number =(int)$number;
$modalsql = myquery($dbvariable,"SELECT * FROM myTable WHERE Number = '$number' ");
$result2 = myfunction_fetch_array($modalsql);
ob_start();

?>

<div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
  <div class="modal-header">
    <button type="button" class="close" onclick="closeModal()" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title"> <?= $result2['number']?></h4>
  </div>
  <div class="modal-body">
    <p><strong>Field 1:</strong><?= $result2['number']?> </p>
    <p><strong>Field 2:</strong><?= $result2['field_2']?>  </p>
    <p><strong>Field 3</strong><?= $result2['field_3']?> </p>
    <p><strong>Field 4:</strong><?= $result2['field_4']?> </p>
    <p><strong>Field 5:</strong><?= $result2['field_5']?></p>
    <p><strong>Field 6:</strong><?= $result2['field_6']?> </p>
    </div>
    <div class="modal-footer">
     <button type="button" class="btn btn-default" onclick="closeModal()">Close</button>
  </div>
  </div>
  </div>
  </div> 

<?php 
ob_get_clean();
?>

<!-- Script for the modal-->
<script>
    function detailsmodal(number){

        var data = {"number" : number};
        jQuery.ajax({
        url : "/page1/page2",
        method : "post",
        data : data,
        success: function(){
            jQuery("body").append(data);
            jQuery("#myModal").modal("toggle");
        },
        error: function(){
            alert("Something went wrong!");
        }
        });
    }
</script>

理想情况下,信息应该根据被点击的不同项目而改变。但它保持不变。

【问题讨论】:

  • ajax 是我提交的代码的最后一部分。而且无论我在表中单击哪个按钮,我都会得到它从数据库中提取的第一个条目
  • 调试的时候,具体是哪里出现的问题?这里生成的客户端代码是什么?在浏览器的调试工具中,当您检查网络请求时,AJAX 请求是否具有您期望的数据?在这些相同的工具中调试 JavaScript 时,number 的值是多少?它是您期望的值吗? AJAX 请求调用的 PHP 代码是什么?它返回什么作为响应?您可以在这里进行很多的调试。
  • 问题出在您发布的代码的第一行。您将在 php 中使用$row['number']; 计算的“数字”传递给函数detailsmodal。你总是传递相同的数字,所以你总是会得到相同的结果。
  • 我编辑了我的代码,我有一个变量循环通过数据库结果并动态创建表。所有条目都有不同的编号。
  • @jumpman8947:您的编辑显示代码中有错字。您打开一个 PHP 短标签 &lt;?(它可能会在您的 PHP 配置中启用,也可能不会启用),但您永远不会关闭它。在该标签中,您实际上不会输出任何内容。您是否错过了输出的= 以及结束标记?您还需要检查生成的客户端代码以查看 0 值的来源。那是首先发送到页面的内容吗?如果是这样,那么所有客户端代码都与问题无关。

标签: javascript php jquery sql ajax


【解决方案1】:

请尝试使用以下代码,您的代码中有很多拼写错误。

<?php while ($row = getarray($res)){ ?>

        <tbody>
          <tr>
            <td> <? $row["state"] ?> </td>
            <td><? $row["number"] ?></td>
            <td>
              <button type="button" class="btn btn-primary" onclick="detailsmodal(<?=
              $row["number"]) ?>">Description</button>
            </td>
          </tr>


          <!-- Modal Button -->
          <button type ="button" class="btn btn-primary" onclick="detailsmodal(<?= $row['number']; ?>)">Modal Button</button>
          <!-- Code for modal -->
          <?php
          $number =$_POST["number"];
          $number =(int)$number;
          $modalsql = myquery($dbvariable,"SELECT * FROM myTable WHERE Number = '".$number."' ");
          $result2 = myfunction_fetch_array($modalsql);
          ob_start();

          ?>

          <div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static" role="dialog">
            <div class="modal-dialog">
              <!-- Modal content-->
              <div class="modal-content">
                <div class="modal-header">
                  <button type="button" class="close" onclick="closeModal()" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                  <h4 class="modal-title"> <?= $result2['number']?></h4>
                </div>
                <div class="modal-body">
                  <p><strong>Field 1:</strong><?= $result2['number']?> </p>
                  <p><strong>Field 2:</strong><?= $result2['field_2']?>  </p>
                  <p><strong>Field 3</strong><?= $result2['field_3']?> </p>
                  <p><strong>Field 4:</strong><?= $result2['field_4']?> </p>
                  <p><strong>Field 5:</strong><?= $result2['field_5']?></p>
                  <p><strong>Field 6:</strong><?= $result2['field_6']?> </p>
                </div>
                <div class="modal-footer">
                 <button type="button" class="btn btn-default" onclick="closeModal()">Close</button>
               </div>
             </div>
           </div>
         </div>

         <?php
         ob_get_clean();
         ?>

         <!-- Script for the modal-->
         <script>
          function detailsmodal(number){

            var data = {"number" : number};
            jQuery.ajax({
              url : "/page1/page2",
              method : "post",
              data : data,
              success: function(){
                jQuery("body").append(data);
                jQuery("#myModal").modal("toggle");
              },
              error: function(){
                alert("Something went wrong!");
              }
            });
          }
        </script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多