将JavaScript对象传递给另一个函数

时间:2019-02-06 15:30:55

标签: javascript json

我正在使用一个API,该API允许我访问已使用的JSON对象并将其转换为JavaScript对象。我得到了电影名称的控制台日志,因此可以正常工作。

现在我想知道是否可以在其他功能中引用此电影对象?还是我需要在每个函数中都进行请求才能访问电影属性?

$("#search-button").click(function(){
   search();
});


function search() {

  var userInput = $("#content-container-search").val().replace(/\s+/g,"%20");
  var searchTerm = "".concat(standardURL, apiKey, 'query=', userInput);
  var request = new XMLHttpRequest();

  request.open('GET', searchTerm , true);

  request.onload = function(data) {
    var data = JSON.parse(this.response);
    if(data['results']){
      data.results.forEach(film => {
        if(film['title']){
          console.log("film title : " + film.title);
        }
      });
    }  
  }

  request.send();

}

2 个答案:

答案 0 :(得分:0)

我认为您需要了解每个变量的范围...如果这样做,则可以创建范围更大的变量,例如,如果您在搜索功能之外创建了var data;,接收您执行的数据:data=JSON.parse(this.response);您将可以从函数外部访问data变量

类似这样的东西:

$("#search-button").click(function(){
    search();
});

var data;

function search() {
    var userInput = $("#content-container-search").val().replace(/\s+/g,"%20");
    var searchTerm = "".concat(standardURL, apiKey, 'query=', userInput);
    var request = new XMLHttpRequest();

    request.open('GET', searchTerm , true);

    request.onload = function(data) {
        data = JSON.parse(this.response);
        data.results.forEach(film => {
        console.log(film.title);      
    });  
}

request.send();

}

答案 1 :(得分:0)

您可以通过以下两种方式进行操作:

$("#search-button").click(function(){
   search();
});

var firmList; // global variable

function search() {
var userInput = $("#content-container-search").val().replace(/\s+/g,"%20");
var searchTerm = "".concat(standardURL, apiKey, 'query=', userInput);
var request = new XMLHttpRequest();

request.open('GET', searchTerm , true);

request.onload = function(data) {
    var data = JSON.parse(this.response);
	firmList = data; // set data to global variable.
    data.results.forEach(film => {
        console.log(film.title);      
    });  
}

request.send();

}


function test(){  // test external function
	console.log(firmList); // will log the object
}


   /*******************OR *****************/

request.onload = function(data) {
    var data = JSON.parse(this.response);
	test(data);  // pass the object to another function.
    data.results.forEach(film => {
        console.log(film.title);      
    });  
}

function test(_object){ // test function.
	console.log(_object); // will log the parsed response object here.
}