AngularJS两个$ http函数异步返回对象

时间:2017-08-21 08:06:46

标签: javascript angularjs

我正在使用$http函数的AngularJs,我有一个异步函数需要另一个反馈变量然后继续,我的代码如下:

function getDataList(company_id) {
    return $http.get("https://for_test_document/restful_api/brandsearch/format=json&company_id=" + company_id);
}

然后我尝试按如下方式使用它,JSON已被正确接收:

for (var i = 0; i < len; i++) {
    getDataList(json.data[i].id).then(function(successdata) {
        var len = successdata.data.length;
        var brand_name = "";
        for (var j = 0; j < len; j++) {
            brand_name = brand_name + successdata.data[j].Brand_Name + '/';
        }
        console.log(brand_name);
        return brand_name + ""
    })

我的问题是,console.log已正确显示brand_name的内容,但是为什么在浏览器中显示对象? the Browser show as follows

我的HTML如下:

function loadInfo(){
    $http({
        method:'GET',
        url:'https://for_example/restful_api/companysearch/?format=json',
        dataType: "json",
        contentType : 'application/json',
        Accept: 'application/json',

    }).then(function (json){
        get_company_type().then(function (data) {
            unique_company_type = data.data

        })
        /*insert data to table */
      var len =json.data.length;
      var tableStr = '';
      tableStr = tableStr+ content
      tableStr = tableStr+'<tbody role="alert" aria-live="polite" aria-relevant="all">';
        for(var i=0;i<len;i++){
            tableStr = tableStr+'<td class=" ">' + 
      getDataList(json.data[i].id).then(function (successdata){                     
       var len = successdata.data.length;                                 
       var brand_name = "" ;                                          
        for(var j=0;j<len;j++){                                    
           brand_name = brand_name +successdata.data[j].Brand_Name+'/';                     
          }                                    
         console.log(brand_name);                                      
        return brand_name + "" }) +                                          
   '</td><td class=" ">' +json.data[i].City  + '</td><td class=" ">' +json.data[i].Address + '</td><td class=" ">' +'Client Contact'  +              
   '</td><td class=" ">' + 'Contact details' + "</td></tr>";
        }
      tableStr = tableStr+"</tbody>";

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

显然它返回brand_name类型的对象,不确定它应该这样做。您可以尝试使用toString()强制解析它为字符串:

for (var i = 0; i < len; i++) {
    getDataList(json.data[i].id).then(function(successdata) {
        var len = successdata.data.length;
        var brand_name = "";
        for (var j = 0; j < len; j++) {
            brand_name = brand_name + successdata.data[j].Brand_Name.toString() + '/';
        }
        console.log(brand_name);
        return brand_name + ""
    })