Skip to content

jQuery mosligi ​

amoCRM uslubidagi vidjetlar define(['jquery'], function ($) { ... }) ko'rinishida yoziladi. Bito bu bog'liqlikni haqiqiy jQuery 4 ga hal qiladi — admin panel bilan birga keladigan to'liq (slim emas) build. Unda atigi bir necha metod almashtirilgan; qolgan hamma narsa — DOM, hodisalar (nomlar fazosi bilan), effektlar, $.fn plaginlari, $.Deferred — oddiy jQuery 4 kabi ishlaydi.

U faqat modulingizning 'jquery' (yoki '$') bog'liqligi sifatida, hamda settings qayta chaqiruvidagi $modal sifatida yetib keladi. Bito uni window.$ yoki window.jQueryga ulamaydi va admin panelning o'zi jQuery ishlatmaydi — global o'zgaruvchi kutayotgan uchinchi tomon skriptingiz uni topa olmaydi. Sahifadagi barcha vidjetlar bitta $ nusxasini bo'lishadi: $.fnga qo'shgan plaginingiz boshqa vidjetlarga ham ko'rinadi, shuning uchun nomlarni noyob qiling.

Nima almashtirilgan ​

MetodNima bo'ladi
$.ajax, $.get, $.postAdmin panelning HTTP klienti orqali ketadi — qarang pastda.
$.trimjQuery 4 da olib tashlangan, qaytarilgan: String(value ?? '').trim().
$.isArrayjQuery 4 da olib tashlangan, qaytarilgan: Array.isArray.
$.isFunctionjQuery 4 da olib tashlangan, qaytarilgan: typeof value === 'function'.
$.parseJSONjQuery 4 da olib tashlangan, qaytarilgan: aynan JSON.parse — bo'sh satr xato tashlaydi.

Faqat shu yettitasi. jQuery 4 olib tashlagan boshqa yordamchilar — masalan $.type, $.now, $.isNumeric, $.isWindow, $.camelCase, .andSelf(), .size() — qaytarilmagan: ularni chaqiradigan eski kodni nativ ekvivalentga almashtiring.

$.ajax ilovaning HTTP klienti orqali ketadi ​

$.ajax, $.get va $.post jQuery'ning XHR'i emas, admin panel ishlatadigan o'sha HTTP klient ustida ishlaydi. Shuning uchun so'rov kirgan foydalanuvchining avtorizatsiyasini, tilini, vaqt zonasini va idempotentlik kalitini oladi — vidjetga o'z kalitlari kerak emas. Bundan kelib chiqadi:

  • HTTP metodi yig'iladi. Faqat GET GET bo'lib qoladi; boshqa har qanday type/method, jumladan PUT, DELETE va PATCH, POST bo'lib yuboriladi — o'qish uchun ham POST ishlatadigan admin API'ga mos ravishda.
  • URL berilganidek olinadi. bito.ajaxdan farqli o'laroq, prefiksni siz uchun hech kim qo'shmaydi.
  • Qo'llab-quvvatlanadigan parametrlar: url, type/method, data, headers, timeout, success, error, complete. dataType va boshqa jQuery sozlamalari e'tiborga olinmaydi, $.ajaxSetup standartlari ham qo'llanmaydi.
  • Javob konverti ochiladi. success va done Bito javobining data qismini oladi, butun { code, data, ... } konvertni emas.
  • Bu uch metod ustiga qurilgan jQuery yordamchilari ($.getJSON, .load()) ham shu yo'ldan ketadi. dataType e'tiborga olinmagani uchun $.getScript skriptni bajarmaydi.

Qaytadigan qiymat — jQuery Deferred promise'i (done/fail/always/then), unga jqXHR ko'rinishidagi maydonlar qo'shilgan:

MaydonQiymat
statusMuvaffaqiyatda 200; xatoda Bito xatosidagi HTTP status; tarmoq xatosida 0
statusTextMuvaffaqiyatda "OK", xatoda xato matni
responseJSONOchilgan javob (muvaffaqiyatda) yoki Bito xato konverti (xatoda)
responseTextXuddi shu, JSON satr ko'rinishida
readyStateSo'rov tugaguncha 1, keyin 4
abort()Hech narsa qilmaydi. So'rovni bekor qilib bo'lmaydi.
getResponseHeader(), getAllResponseHeaders()Doim null / "" — javob sarlavhalari berilmaydi

success(data, 'success', jqXHR), error(jqXHR, 'error', err) va complete(jqXHR, status) jQuery tartibida chaqiriladi, done/fail esa jQuery'dagi kabi sinxron ishlaydi.

js
$.ajax({
  url: '/back-api/admin/customer/get-paging',
  data: { page: 1, limit: 20 },
  success: function (data) { /* data — konvertning `data` qismi */ },
  error: function (jqXHR) {
    if (jqXHR.status === 403) { /* ... */ }
  },
})

WARNING

Admin API 401 qaytarsa, admin panel foydalanuvchini tizimdan chiqaradi — bu vidjetingiz so'rovi uchun ham amal qiladi.

Bito admin API'siga murojaat qilish uchun bito.ajax afzalroq — u prefiksni o'zi qo'shadi.

Bito 2.0 Integration API