#javascript #jquery #arrays #axios #get
Вопрос:
У меня есть 2 API Get, которые я использовал для чтения данных. Первый API, который я использовал, — это чтение сведений о студенте. В этой студенческой информации есть идентификатор, который мне нужно прочитать из второго API и отобразить данные в первом API
Первый API-это getDetails, Второй API-это getClass
Я хочу передать e.student_class_id
в getClass
после того, как у меня будет имя класса, я верну имя класса в getDetails
const getDetails= (infoID) =>
{
axios.get(`${apiInfo}student/getDetails?student_id=${infoID}`)
.then(function (response) {
if(response.data.status == 'success')
{
e = response.data.resu<
//passing this e.student_class_id;
$('#tabClassName').html(`<div class="col-xl-12 row">
<div class="col-xl-6">
<h6>Class details</h6>
<p>Class :<span class="item"> //and pass the class name here ? </span></p>
</div>
</div>
`);
}
});
}
const getClass= () =>
{
axios.get(`${apiInfo}getClass`)
.then(function (res) {
if(res.data.status == 'success')
{
res.data.result.map((e) =>{
if(e.id == 'how do I pass it the e.student_class_id here ?'){
// return``;
console.log(e.class_name);
}
});
}
});
}
Комментарии:
1. вы можете использовать сеанс
2. сессия ? Как мне пройти его с помощью сеанса ?
Ответ №1:
Вам нужно пройти несколько шагов.
сначала вам нужно вернуть идентификатор e.student_class_id внутри метода then.
во-вторых, вам нужно вернуть всю цепочку «axios.get…».
Делая это, ваш getDetails возвращает обещание, которое разрешается в «e.student_class_id«.
const getDetails = (infoID) => {
return axios
.get(`${apiInfo}student/getDetails?student_id=${infoID}`)
.then(function (response) {
if (response.data.status == "success") {
e = response.data.resu<
//passing this e.student_class_id;
$("#tabClassName").html(`<div class="col-xl-12 row">
<div class="col-xl-6">
<h6>Class details</h6>
<p>Class :<span class="item"> //and pass the class name here ? </span></p>
</div>
</div>
`);
return e.student_class_id;
}
});
};
результат был бы примерно таким :
getDetail(1233).then(result=>.... // result is e.student_class_id
Нам также нужно отредактировать функцию getClass.
сначала он должен принять аргумент класса.
затем, если вы хотите использовать данные, которые вы получаете в getClass, где-то еще, вы должны вернуть это значение внутри метода then, и вам нужно вернуть axios.get. так же, как getDetail:
const getClass = (classId) => {
return axios.get(`${apiInfo}getClass`).then(function (res) {
if (res.data.status == "success") {
res.data.result.map((e) => {
if (e.id == "how do I pass it the e.student_class_id here ?") {
// return``;
console.log(e.class_name);
}
});
}
return res; // or anything else that you may need
});
};
наконец, вы можете использовать эти функции
getDetails(123123).then(classId=>getClassId(classId)).then(dataFrom2ndApi=>...)
Комментарии:
1. Я не совсем понимаю, в чем
getDetail(1233).then(result=>.... // result is e.student_class_id
и в этой частиgetDetails(123123).then(classId=>getClassId(classId)).then(dataFrom2ndApi=>...)
, куда я должен положить эти строки ?2. Я получил e не определено, когда я добавляю
return e.student_class_id
3. вы должны помещать эти строки всякий раз, когда они вам нужны, например, вы берете «идентификатор» из ввода, а затем используете последнюю строку в моем ответе с этим идентификатором. по поводу ошибки я отредактировал функцию getDetail. в функции getClass вам решать, что возвращать и куда возвращать, самое главное, чтобы ваше возвращаемое значение было в методе «тогда».