Как получить значение веб-API json, используя VueJS - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в Vue.JS.На самом деле я пытаюсь получить имя банка, набрав номер маршрута.

API: https://www.routingnumbers.info/api/name.json?rn=011103093

export default {
        data: function () {

            return {
                picker: new Date().toISOString().substr(0, 7),
                resultsArray: {
                    'name' : '',
                    'message' : '',
                    'code' : '',
                    'rn' : ''
                },
         }
     }
   }

methods: {
           /* searchBasedOnMonthAndType() {
                let app = this;
                app.modeldailog = false
                app.rows = [];
                app.renderInvoicesBasedOnMonth(app.picker);
            },*/

            getBankName() {
                let app = this;
                app.rows = [];
                var rn = '011103093';
                $.ajax({
                    url: 'https://www.routingnumbers.info/api/name.json?rn=' + rn,
                    success(res) {
                        if (res.results != null) {
                            app.resultsArray = res.results;
                        } else {
                            // console.log(app.resultsArray);
                            // console.log("test after");
                            alert("data not fetched");
                        }


                    }

                });
            },
}

<label>Routing Number</label>
 <input type="text" name="routingNo" v-validate="'required|numeric'"  v-model="paymentinfo.routing_no" class="form-control input-sm" v-on:keyup="getBankName();">

<label>Bank Name</label>
<input type="text" name="chck_bank_name" v-validate="'required'" class="form-control input-sm" v-bind:value="resultsArray.name">

Я получаю нулевой ответ Ajax.Всякая другая часть исполняется.

Ответы [ 3 ]

1 голос
/ 15 марта 2019

Возможно, вы опечатали параметры для метода $ .ajax. Попробуйте это:

getBankName() {
  let app = this;
  app.rows = [];
  var rn = '011103093';
  $.ajax({
    url: 'https://www.routingnumbers.info/api/name.json?rn=' + rn,
    success: (res) => {
      if (res != null) {
        app.resultsArray = res;
      } else {
         // console.log(app.resultsArray);
         // console.log("test after");
        alert("data not fetched");
      }
    }
  });
},

К вашему сведению: результатом этого вызова API не является массив. это так:

{"name": "TD BANK NA", "message": "OK", "code": 200, "rn": "011103093"}
0 голосов
/ 15 марта 2019

Запрос Ajax становится успешным, но условие if не выполняется, так как нет такого ключевого «результата» в res (ответ, возвращаемый ajax).

0 голосов
/ 15 марта 2019

Похоже, вы должны использовать что-то вроде этого:

$.ajax(...).done(data => {
  console.log(data)
}).fail(() => {
  console.log('fail')
})

PS Лучше использовать const vm = this; вместо let app = this;.Это де-факто стандарт в Vue.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...