【问题标题】:getting data from PHP file with json is failing使用 json 从 PHP 文件中获取数据失败
【发布时间】:2014-12-17 00:04:28
【问题描述】:

我无法从 PHP 文件中获取每个数据,我总是遇到 AJAX 失败,我尝试了很多方法,并为这个问题寻找了一些页面,但我找不到任何解决方案,这是我最后一次来到的地方. 这是我的 jQuery 函数:

$(document).ready(function () {

$(function () {
$('a[class="someclass"]').click(function(){

   var somedata = $(this).attr("id");

   $.ajax({
      type: "POST",
      url: "foo.php",
      data: {"id": somedata}, 
      dataType:"json",

      success: function(data){
         e.preventDefault();
         $("#data1").html(data[0]);
         $("#data2").html(data[1]);
         $("#data3").html(data[2]);
         $("#data4").html(data[3]);
      },
      error:function(){
          alert("AJAX request was a failure");
      }
    });
    });
    });
});

这是我的 PHP 文件:

$data = $_POST['id'];

$con = mysqli_connect('localhost','root','','database');
if (!$con) {
  die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"database");
$sql="SELECT * FROM table WHERE id = '".$data."'";
$result = mysqli_query($con,$sql);


while($row = mysqli_fetch_array($result)) {

  $jsondata1 = array($row['data1'], $row['data2'], $row['data3'],  $row['data4']); 

  echo json_encode($jsondata1);
 }
mysqli_close($con);

我认为没有必要分享 HTML 文件,但如果你愿意,我可以与你分享。 谢谢!

【问题讨论】:

  • Ajax 发送或接收失败?
  • 接收,发送没问题。 json 不工作
  • 我不明白你所说的连接是什么意思,我该怎么做?
  • 您的查询返回多少行?
  • id是表的主键吗?

标签: php jquery ajax json


【解决方案1】:

您正在覆盖循环中的数组值并回显 $jsondata1,因此您在循环内发送了许多不同的带有回显的数组,请尝试以下代码:

 $jsondata1 = array();

 while($row = mysqli_fetch_array($result)) {

    $jsondata1[] = array($row['data1'], $row['data2'], $row['data3'],  $row['data4']); 

 }

 echo json_encode($jsondata1);

【讨论】:

  • 他没有覆盖数据,他正在回显多个不是有效 json 对象的 json 对象。
  • 我将代码更改为这些,但仍然无法正常工作。也许问题出在 jQuery
  • @KorhanYüzbaş 你能告诉我们你遇到的错误吗?尝试检查您的浏览器控制台。
【解决方案2】:

e.preventDefault(); 是个问题。 e 未定义,如果它是默认操作,则在调用成功函数时已经发生。试试

$('a[class="someclass"]').click(function(e){
    e.preventDefault();
   var somedata = $(this).attr("id");

   $.ajax({
      type: "POST",
      url: "foo.php",
      data: {"id": somedata}, 
      dataType:"json",

      success: function(data){
         $("#data1").html(data[0]);
         $("#data2").html(data[1]);
         $("#data3").html(data[2]);
         $("#data4").html(data[3]);
      },
      error:function(){
          alert("AJAX request was a failure");
      }
    });
    });
    });
});

【讨论】:

  • 我改了还是不行,可能是json的问题
  • 可能,您的查询是否返回多行?
  • 只有一行,我想在 PHP 中获取每个变量。关于什么; $.ajax({ type: "POST", url: "foo.php", data: {"id": somedata}, dataType:"json", success: function(data){ e.preventDefault(); $( "#data1").html(data[0]); $("#data2").html(data[1]); $("#data3").html(data[2]); $("# data4").html(data[3]); }, error:function(){ alert("AJAX 请求失败"); } });这部分可能有问题
  • 我认为这与我的代码相同,除了 preventdefault 之外我没有看到任何区别。它仍然无法正常工作。我写了“$("#data1").html(data[0]);”但我应该用 jsondata1 调用它吗?还是我应该以某种方式使用它?
  • 你能发布请求的响应吗?
【解决方案3】:

您需要对完整的响应进行编码。 当您回显每个编码时,它将不起作用。 做类似的事情

$jsonArray = array();
while(){
    array_push($jsonArray, array($row['data1'], $row['data2']);
}
echo json_encode($jsonArray);

【讨论】:

    【解决方案4】:

    当您需要做的是将这些中间变量分配给一个数组并使用 json 编码对该数组进行编码以返回时,您会多次调用 json_encode。

    PHP:

    $data = $_POST['id'];
    
    $con = mysqli_connect('localhost','root','','database');
    if (!$con) {
      die('Could not connect: ' . mysqli_error($con));
    }
    
    mysqli_select_db($con,"database");
    $sql="SELECT * FROM table WHERE id = '".$data."'";
    $result = mysqli_query($con,$sql);
    
    $jsondata1 = [];
    while($row = mysqli_fetch_array($result)) {
        $jsondata1[] = array($row['data1'], $row['data2'], $row['data3'],  $row['data4']); 
    }
    mysqli_close($con);
    
    die(json_encode($jsondata1));
    

    JavaScript:

    $(document).ready(function () {
    var doc = $(document);
    doc.on('click', 'a.someclass', function(e){
        e.preventDefault();
        var somedata = $(this).attr("id");
    
       $.ajax({
          type: "POST",
          url: "foo.php",
          data: {"id": somedata}, 
          dataType:"json",
          success: function(data){
              $("#data1").html(data[0]);
              $("#data2").html(data[1]);
              $("#data3").html(data[2]);
              $("#data4").html(data[3]);
          },
          error:function(){
              alert("AJAX request was a failure");
          }
      });
    });
    

    });

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 2013-11-14
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2018-06-04
      • 1970-01-01
      相关资源
      最近更新 更多