Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用json从PHP文件获取数据失败_Php_Jquery_Ajax_Json - Fatal编程技术网

使用json从PHP文件获取数据失败

使用json从PHP文件获取数据失败,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我无法从PHP文件中获取每个数据,我总是遇到AJAX失败,我尝试了很多方法,并寻找了一些页面来解决这个问题,但我找不到任何解决方案,这是我最后一次来的地方。 这是我的jQuery函数: $(document).ready(function () { $(function () { $('a[class="someclass"]').click(function(){ var somedata = $(this).attr("id"); $.ajax({ type:

我无法从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文件,但如果您愿意,我可以与您共享。
谢谢大家!

您正在覆盖循环中的数组值和echo$jsondata1,因此您正在发送许多不同的数组,其中echo在循环中,请尝试以下代码:

 $jsondata1 = array();

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

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

 }

 echo json_encode($jsondata1);
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_encode,而您需要做的是将这些中间变量分配给一个数组,并使用json encode对该数组进行编码以返回

PHP:

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");
      }
  });
});

}))

您需要对完整的响应进行编码。 当你回显每一个编码后,它将不起作用。 做点像

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

Ajax发送或接收失败?接收,发送没有问题。json不起作用我不明白你所说的连接是什么意思,我该怎么做?你的查询返回多少行?
id
是表的主键吗?他没有覆盖数据,他在回显多个不是有效json对象的json对象。我将代码更改为这些,但仍然不起作用。也许问题出在jQuery@KorhanY你能告诉我们你得到的错误吗?尝试检查您的浏览器控制台。我更改了它,但仍然无法工作,可能问题在于JSONCOLD be,您的查询是否返回多行?只返回一行,我想在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]),错误:function(){alert(“AJAX请求失败”);}});可能这部分有问题我想这和我的代码是一样的,除了preventdefault之外,我看不出有任何区别。它仍然不起作用。我像“$(“#data1”).html(data[0])”那样编写但是我应该用jsondata1调用它吗?或者我应该以某种方式使用它吗?您可以发布请求的响应吗。
$jsonArray = array();
while(){
    array_push($jsonArray, array($row['data1'], $row['data2']);
}
echo json_encode($jsonArray);