Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

JavaScriptda o`zgaruvchilarni olish va qiymat biriktirish

+1 ovoz
92 marta ko‘rilgan
so‘radi 17 oktabr, 18 parmonov98 (1,462 bal)

const ajax_connection = (type, data, response) => {

var response;

const ajax = new XMLHttpRequest();

ajax.onreadystatechange = function () {

if(ajax.readyState == 4 && ajax.status == 200){

console.log('Everything is OK!');

response = ajax.responseText;  // mana shu qatordagi responseText ni response ga biriktirib qaytaryapman ammo bu ishlamayapti. 

}else{

console.log(ajax.status);

console.log('\nThere is an error. it seems the requested file does not exist!');

}};

};

ajax.open(type['type'], type['url'], true);

ajax.send();

// mana shu yerda response ni qiymati serverdan qaytgan responseText ga teng emas! 

return response; // bu yerda connection func dan qaytarilyapti

}

umuman olganda serverdan kelgan javobni biron varga  biriktirib uni boshqa funksiyaga qaytarishim kerak.

yuqoridagideb qilinganda hech qanday o'zgarish yo'q.ya'ni oldin qanday qiymati bo'lsa response o'sha qiymati bilan yana return bo'lib ketyapti.

funksiyasni ichidagi ajax.onreadystatechange  uchun yaratilgan funksiyadan ajax_connection   funksiyasidagi varga murojaat qilib unga qiymat biriktirishim kerak.savol buni qanday qilsa bo'ladi? 

1 ta javob

0 ovoz
javob berdi 17 oktabr, 18 Jasur320 (75 bal)
tanlangan 19 oktabr, 18 parmonov98
 
Eng yaxshi javob

"onreadystatechange" funksiya ansinhron ishlar ekan, shuning uchun boshqa kodlardan keyin vazifasini bajarib bo'lishi mumkin. Shu sababli siz "return"  qilayotgan paytizda bo'sh yoki eski qiymat qaytarilib ketadi. Manimcha "responseText" ni boshqa funksiyaga qaytarish o'rniga, o'sha funksiyni "onreadystatechange" funksiya ichida chaqirishingiz kerak:

ajax.onreadystatechange = function () {

if(ajax.readyState == 4 && ajax.status == 200){

console.log('Everything is OK!');

response = ajax.responseText;  // mana shu qatordagi responseText ni response ga biriktirib qaytaryapman 

ammo bu ishlamayapti. 

functionDependentOnResponseText(response);

}else{

console.log(ajax.status);

console.log('\nThere is an error. it seems the requested file does not exist!');

}};

};

izoh qoldirdi 19 oktabr, 18 parmonov98 (1,462 bal)
avvalambor rahmat lekin buni topdim sal oldinroq. shuni topishga ancha ko'p vaqt ketdi. (docs ni erinmay o'qiganim shuncha vaqt ketmasdi kimki o'qib qolsa shu commentni erinmasdan hammasiga bir ko'z yugurtirish kerak ekan)bundan boshqa ajax orqali multiple so'rovlar qilishda qanday turlaridan foydalanasizlar?  ya'ni sizlar qanday qilasizlar shuni.yoki alohida so'rov bo'ladimi har bir narsa uchun? nima uhcun so'rayapman chunki ko'p func yaratishga to'g'ri kelyapti
izoh qoldirdi 19 oktabr, 18 Jasur320 (75 bal)
Man js,ajax da o'zi ishlamiman (java da programmalar yozib turaman) ,  sizni fuknsiyangizni shunchaki eclipse da ishlatib ko'rdim holos. Agar reponse sinhron qaytganda sizda ko'p funksiyalar bo'lmasmidi? Agar muammo responseText turli funksiyalarga qaytarishda bo'lsa , yechimi quyidagi ilovada keltirilgn,  "reponseText" ni qayta ishlshi kerak bo'lgan hohlagan funkisyangizni asosiy funskisyaga input parameter qilib berin va shu funkisyani  "onreadystatechange"  bo'lganda  ishlatin :

https://stackoverflow.com/questions/12421860/returning-xmlhttp-responsetext-from-function-as-return

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...