【问题标题】:ajax call is not working even after tried many solutions即使尝试了许多解决方案,ajax 调用也无法正常工作
【发布时间】:2018-01-18 08:06:38
【问题描述】:

我尝试了许多解决方案,但仍然无法正常调用 ajax。 它没有显示控制台错误或任何错误。我试过 $_POST 和 $_REQUEST

HTML

<div class="form-group">
  <label for="usernamee" class="col-sm-2">Select Customer :</label>
  <div class="col-sm-10">
    <select class="form-control select2" required="" name="uid" id="customer_name">
      <?php
        $getcust = $conn->query("SELECT id,full_name FROM `data_entry`");
        while ($fetch1 = $getcust->fetch_array()) {
      ?>
      <option value="<?=$fetch1[0]?>"><?=$fetch1[1]?></option>
      <?php  } ?>
    </select>
  </div>
</div>

Ajax 调用

$("#customer_name").change(function(e) {
      e.preventDefault();
      var idd = $('#customer_name').find(":selected").val();
      var data = 'idd=' + $('#customer_name').find(":selected").val();
      //alert(data)
      $.ajax({
          type : "POST",
          url : "ajax_get_subid.php",
          //data : {idd:idd},
          data : data,
          success : function(data) {
              alert(data);
          }
      });
      e.preventDefault();
    });

ajax 调用在$(document).ready(function(){()} 内。 Jquery 版本是 2.2.3

还有 PHP

<?php

if(isset($_REQUEST['idd'])){

    $id = $_REQUEST['idd'];

    echo $id;

}

?>

在我的文件中 JS 是

<script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="../plugins/input-image-display/fileinput.min.js" type="text/javascript"></script>
<script src="../dist/js/jquery-ui.min.js"></script>
<script>
  $.widget.bridge('uibutton', $.ui.button);
</script>
<script src="../bootstrap/js/bootstrap.min.js"></script>
<script src="../plugins/select2/select2.full.min.js"></script>
<script src="../dist/js/moment.min.js"></script>
<script src="../plugins/daterangepicker/daterangepicker.js"></script>
<script src="../plugins/datepicker/bootstrap-datepicker.js"></script>
<script src="../plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
<script src="../plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="../plugins/fastclick/fastclick.js"></script>
<script src="../dist/js/app.min.js"></script>
<script src="../dist/js/demo.js"></script>

有冲突吗?

【问题讨论】:

  • 你说的不工作是什么意思?
  • 解释不工作
  • 无控制台错误无警报
  • 发布您的 HTML sn-p,据我所知,只有可能出错的地方,即发布的未定义数据..
  • 您是否动态加载#customer_name?你能在你的代码中显示#customer_name 部分吗?

标签: php jquery ajax


【解决方案1】:

由于你使用的是select2,你需要这样使用它:

$("#customer_name").on('select2:select', function(e) {
  e.preventDefault();
  var selectedVal = $(this).val();
  $.ajax({
    type: "POST",
    url: "ajax_get_subid.php",
    data: {idd: selectedVal},
    success: function(response) {
      alert(response);
    }
  });
});

【讨论】:

  • ajax 无响应。
  • 您需要分享完整的信息。你检查控制台是否有错误?您是否检查网络是否触发了请求?您是否尝试在此代码中添加alert() 进行调试?
  • 请查看评论。我提供所有细节。我尝试了一切。没有控制台错误并且在网络选项卡中当我更改选择框变量时没有找到请求
  • 我已经更新了我的答案。意识到您使用的是 select2 而不是默认的 HMTL select。你可以试试更新后的代码。
  • 谢谢。但是很抱歉没有工作。!
【解决方案2】:

兄弟,我认为你错过了 ajax 调用中的 dataType 试试这个,希望对你有帮助:

$("#customer_name").change(function(e) {
     e.preventDefault();
    var id = $('#customer_name').find(":selected").val();

    $.ajax({
        type : "POST",
        url : "ajax_get_subid.php",
        data : {id:id},
        dataType:'json',
        success : function(data) {
            alert(data);
        }
    });
    e.preventDefault();
  });

还有你的 PHP:

 if(isset($_POST['id'])){

   $id = $_POST['id'];

   echo json_encode($id);

}

【讨论】:

  • 谢谢。但是很抱歉没有工作。!
  • 没有控制台错误没有改变,什么都没有。我检查了网络选项卡没有任何响应
  • 我看到你 jquery 运行不好。也许是冲突,您是否出于测试目的尝试删除其他 js 一段时间?
【解决方案3】:

如果您使用 $.getJSON 或 $.get/$.post 可能会更容易,在这种情况下,我认为 $.getJSON 是最好的选择,尤其是对于未来的代码更改。

JS 代码: /scripts/main.js

function getData(requestID, callback){
    $.getJSON("/api/getData.php",{id:requestID},callback);
}

function customerName_change(){
  debugger;
  getData(12345,function(result){
     debugger;
     console.log(result);
     alert(result.ID);
  });
}

$(document).ready(function(){
   $('#customer_name').on('change',customerName_change);
});

PHP 代码: /api/getData.php

<?php
  class ApiResult {
     public $ID;
     public $Extra;
  }

  $res = new ApiResult();
  $res->ID = 234124;
  $res->Extra =$_REQUEST['id'];

  echo json_encode($res);

?>

【讨论】:

  • @WebInfos 在 chrome 开发者工具的 customerName 函数中添加断点,还有一个问题,customer_name 是 TextBox (input[type=text]) 吗?
  • return falsestopPropagation preventDefault 而不仅仅是stopPropagation
猜你喜欢
  • 2017-03-28
  • 2017-10-22
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多