Php 使用jQuery,我如何将json数组分配给jQuery数组的索引

Php 使用jQuery,我如何将json数组分配给jQuery数组的索引,php,jquery,arrays,json,Php,Jquery,Arrays,Json,假设我正在从php中的first.php和second.phpcoding检索json格式的数据。我想在jQuery数组的数组中分配这个json数据。让数组为var total=[index1,index2]来自first.php的第一个json数据将分配给total的第一个索引,来自second.php的第二个json数据将分配给total的第二个索引。我将如何做到这一点。我尝试了以下代码。我是最大的,所以如果有任何错误,那么对不起。谢谢你回复我,谢谢 jquery var total = [

假设我正在从php中的first.php和second.phpcoding检索json格式的数据。我想在jQuery数组的数组中分配这个json数据。让数组为var total=[index1,index2]来自first.php的第一个json数据将分配给total的第一个索引,来自second.php的第二个json数据将分配给total的第二个索引。我将如何做到这一点。我尝试了以下代码。我是最大的,所以如果有任何错误,那么对不起。谢谢你回复我,谢谢

jquery

var total = ['index1','index2'];
var ajax = new XMLHttpRequest();
var method = "GET";
var url = "first.php";
var asynchronous = true;

ajax.open(method,url,asynchronous);
    //sending ajax request.
ajax.send();

//receiving response from  the first.php
ajax.onreadystatechange = function(){
if(this.readyState== 4 && this.status == 200){ //readyState==4 means request is finish and response is ready 
    //status==200 is 'OK'
    var data = JSON.parse(this.responseText);
    for(var a=0; a<data.length; a++){
        total['index1']=data[a];
    }
  }
}console.log(total['index1']); //i want the output here

var url="second.php";
ajax.open(method,url,asynchronous);
ajax.send();
ajax.onreadystatechange = function(){
if(this.readyState== 4 && this.status == 200){ //readyState==4 means request is finish and response is ready 
    //status==200 is 'OK'
    var data1 = JSON.parse(this.responseText);
    for(var a=0; a<data1.length; a++){
        total['index2']=data1[a];
    }
  } 
}
second.php

include 'connection.php';

$data = array();
$query=mysqli_query($con,"select * from tabel_name ORDER BY id ASC");
if(mysqli_num_rows($query)){
    while($row = mysqli_fetch_assoc($query)){
        $data[] =$row; 
    };
    echo json_encode($data);
}

我只是想将第一个json数组分配给index1,并在console.log中显示,将第二个json数组分配给index2

您使用了错误的属性长度。正确的属性是for语句中的长度

ajax.onreadystatechange = function(){
if(this.readyState== 4 && this.status == 200){ //readyState==4 means request is finish and response is ready 
    //status==200 is 'OK'
    var data = JSON.parse(this.responseText);
    for(var a=0; a<data.length; a++){
        total['index1']=data[a];
    }

    // Here, server has returned response
    console.log(total['index1']); //i want the output here
  }
}
// Here, server has not yet returned response

我发现了问题。您可以在onreadystatechange回调中使用它,但它不会设计ajax变量

我已经在ajax1中重命名了ajax变量,并创建了第二个ajax2

请尝试以下代码:

var total = {index1: [], index2: []};
var ajax1 = new XMLHttpRequest();
var method = "GET";
var url = "first.php";
var asynchronous = true;

ajax1.open(method,url,asynchronous);

//receiving response from  the first.php
ajax1.onreadystatechange = function(){
    if(ajax1.readyState== 4 && ajax1.status == 200){ //readyState==4 means request is finish and response is ready
        //status==200 is 'OK'
        var data = JSON.parse(ajax1.responseText);
        for(var a=0; a<data.length; a++){
            total['index1'].push(data[a]);
        }
        console.log('=== index1 ===');
        console.log(total['index1']); //i want the output here
    }
}
//sending ajax request.
ajax1.send();


var ajax2 = new XMLHttpRequest();
var url="second.php";
ajax2.open(method,url,asynchronous);
ajax2.onreadystatechange = function(){
    if(ajax2.readyState== 4 && ajax2.status == 200){ //readyState==4 means request is finish and response is ready
        //status==200 is 'OK'
        var data1 = JSON.parse(ajax2.responseText);
        for(var a=0; a<data1.length; a++){
            total['index2'].push(data1[a]);
        }
        console.log('=== index2 ===');
        console.log(total['index2']); //i want the output here
    }
}
ajax2.send();

抱歉,我编辑了我的问题,现在您可以看到正确的问题了好的,您的console.log会立即运行,但ajax请求尚未返回。尝试插入console.logtotal;就在onreadystatechange回调中的for语句之后。我的代码是对的还是错的。json数据是否将正确分配给索引?你可以编辑我的问题并发布它。作为回答,我认为他是对的,但你处于异步模式。所以,您的服务器在您运行console.logtotal['index1']之后进行应答。实际上,我没有正确地理解您。您能为我详细说明一下吗?谢谢。我脑子里有个问题?我可以问一下吗?`total['index1']`在这个数组中,它意味着total的第一个索引?我是对的,它等于total['index1']意味着total={index:[]}??我是righttotal['index1']=total.index1您可以通过var total={index1:[]}创建它,但是total['index1']不是total={index:[]},因为缺少1。请注意,index1是您的初始键,我们可以有另一个键,如myindex:total['myindex']=total.myindex或total={myindex:[]}是的,是的,很抱歉我错过了1
var total = {index1: [], index2: []};
var ajax1 = new XMLHttpRequest();
var method = "GET";
var url = "first.php";
var asynchronous = true;

ajax1.open(method,url,asynchronous);

//receiving response from  the first.php
ajax1.onreadystatechange = function(){
    if(ajax1.readyState== 4 && ajax1.status == 200){ //readyState==4 means request is finish and response is ready
        //status==200 is 'OK'
        var data = JSON.parse(ajax1.responseText);
        for(var a=0; a<data.length; a++){
            total['index1'].push(data[a]);
        }
        console.log('=== index1 ===');
        console.log(total['index1']); //i want the output here
    }
}
//sending ajax request.
ajax1.send();


var ajax2 = new XMLHttpRequest();
var url="second.php";
ajax2.open(method,url,asynchronous);
ajax2.onreadystatechange = function(){
    if(ajax2.readyState== 4 && ajax2.status == 200){ //readyState==4 means request is finish and response is ready
        //status==200 is 'OK'
        var data1 = JSON.parse(ajax2.responseText);
        for(var a=0; a<data1.length; a++){
            total['index2'].push(data1[a]);
        }
        console.log('=== index2 ===');
        console.log(total['index2']); //i want the output here
    }
}
ajax2.send();