Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menerima dan mengumpul objek yang diluluskan daripada fungsi lain dalam JavaScript?

Saya mempunyai fungsi, mari kita panggil ia GetData(). Saya mendapat data daripada pertanyaan dalam fungsi lain dan menjalankan panggilan ajax untuk mengisi data. Setelah operasi ini selesai, saya menghantar data ke fungsi lain, mari kita panggil PlaceData(). Setiap panggilan ajax ke GetData() meletakkan data dalam objek. Saya kemudian menghantar setiap objek ke PlaceData() dan saya ingin mengumpul objek ini ke dalam tatasusunan dalam PlaceData() melalui kaedah push(), tetapi setiap kali ia hanya menambah tatasusunan baharu dan bukannya menghantar yang semasa Objek dikumpulkan bersama , jadi saya hanya mendapat objek individu, bukan koleksi. Bagaimanakah saya boleh mengumpulnya ke dalam tatasusunan?

Jadi inilah contoh kod yang saya gunakan:

function GetData(query) {
    var json = "";
    var api_url = ('https://jsondata.site?conn={conn}&query={query}');
    $.ajax({async: false; url: api_url, method: "GET"}).done(function(data){
        json = JSON.parse(data);
    });
    PlaceData(json);
};

function PlaceData(data) {
    var objCollect = [];
    objCollect.push(data);

    console.log(objCollect);
};

Saya mahu objCollect[] menyimpan semua objek yang dihantar, tetapi sebenarnya saya hanya mendapat tatasusunan baharu yang mengandungi setiap objek individu.

P粉413704245P粉413704245400 hari yang lalu612

membalas semua(1)saya akan balas

  • P粉351138462

    P粉3511384622023-09-16 10:39:06

    Anda perlu menggunakan pembolehubah skop global untuk menyimpan objek. Tentukan objCollect di luar fungsi dan ia kini harus memegang semua nilai.

    var objCollect = [];
    
    function GetData(query) {
        var json = "";
        var api_url = ('https://jsondata.site?conn={conn}&query={query}');
        $.ajax({async: false; url: api_url, method: "GET"}).done(function(data){
            json = JSON.parse(data);
        });
        PlaceData(json);
    };
    
    function PlaceData(data) {
        objCollect.push(data);
        console.log(objCollect);
    };

    balas
    0
  • Batalbalas