【问题标题】:.done is successful but showing empty data.done 成功但显示空数据
【发布时间】:2022-03-15 22:06:05
【问题描述】:

选择数量下拉按钮后,价格字段将相应更改。但是,我不断收到成功警报,但数据显示结果为空。

我尝试使用成功而不是完成,但结果是一样的。我还删除了数据类型:json,仍然没有变化。

$('#qty').change(function(){
    var val = $(this).val();
    $.ajax({
          method: "GET",
          url: "someURLHERE", 
          data: { val: val},
          dataType: "html"
        })
          .done(function(data) {
              alert("Success" + data);
                $('#price').html(data);
                $('#price').trigger('change');
          }).fail(function()  {
                alert("Fail");
   })

});

这是我的模型:

  public function getPrice($product_id, $quantity){
       $sql = "SELECT price FROM `price_table` where quantity = '".$quantity."' and product_id = '".$product_id."' ";
       $query = $this->db->query($sql)->row_array();
       return $query;
   }

这是我的控制器:

public function getPrice(){
    $p_id = $_GET['p_id'];
    $qty = $_GET['qty_ag'];

    $price = $this->users_model->getPrice($prpduct_id, $quantity);
    json_ok($price);
}

现在,警报框正在返回:Success{"status":"OK","data":{"pv_value":"120.00"}}

我想要得到的只是价值 120.00

【问题讨论】:

  • 您的服务器返回的负载是否正确?
  • 成功或错误取决于响应的HTTP状态码;该响应是否实际上有任何正文内容在这方面并不重要。在浏览器开发工具、网络面板中检查请求,并检查实际返回的内容。
  • 您尝试过什么调试问题?这到底和 PHP 有什么关系?
  • #price 在哪个元素中定义?
  • 因为 $('#price').html(data);如果它是输入标签将不起作用

标签: php jquery ajax


【解决方案1】:

你的模型getPrice() 方法必须返回一些东西。

【讨论】:

  • 我已经编辑了我的编码。我很确定问题出在我的控制器上,但我似乎无法弄清楚。谢谢你的帮助!!
【解决方案2】:

你说你删除了dataType: "JSON",但是你在服务器端(PHP)返回什么类型的数据,以及你是如何返回的?

例如

如果您期望 JSON 类型的数据,那么您仍然可以在 JavaScript 中使用它:

$('#qty').change(function(){
    var val = $(this).val();

    $.ajax({
      method: "GET",
      url: "someURLHERE", 
      data: {
        val: val
      },
      dataType: "JSON" // notice I've returned it to JSON
    })
    .done(function(data){
      console.log("Success" + data); // notice I'm using "console.log"
      $('#price').html(data);
      $('#price').trigger('change');
    })
    .fail(function(){
      alert("Fail");
    })
});

但是,在服务器端,PHP 应该返回这样的数据:

<?php
  header("Content-Type: application/json");
  die(json_encode($yourData));
?>

【讨论】:

  • 您的 PHP 脚本应该有一个 text/json 内容类型标头,否则 JSON 将作为 HTML 提供。
  • 提醒了这个好习惯,谢谢!编辑添加,但是,正确的用法是“application/json”。
  • do'h,我总是犯这个错误!
  • 我已经编辑了关于控制器和模型的问题。无论如何,我的警报仍然显示成功消息。
  • 当我把return $price改为json_ok($price)时,得到的数据是[object Object]。我能错过什么?非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 2023-02-23
  • 2013-07-19
  • 2021-07-02
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
相关资源
最近更新 更多