javascript obje ye dışarıdan parametre eklenirmi.
ajax fonksiyonuma callback obje ekleyip
obje içinde responseText almak istiyorum. Fonksiyon ile oluyor ama birden fazla fonsiyon kullanacağım objeye parametre almak istiyorum.
<javascript>
Ajx(form,'ajax.php', 'POST', alertBox);
const alertBox = {
//BURAYA ajax sayfasında ki responseText içeriğini almak istiyorum
function init(){
//başka birşey..
}
function show(e){
console.log(e.responseText); //BURASI
}
};
</javascript>
<php>
//ajax
function Ajx(form, url, method, callback) {
if (this.readyState == 4 && this.status == 200) {
if (typeof callback == 'object') {
callback(this);
}
}
</php>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
https://www.youtube.com/watch?v=kkuZTAMyAFI
Buraya bakarsan anlayacaksın.
<script>
'use strict';
function ysAjax(url, method, data, callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
if (typeof callback == 'function') {
callback(this);
}
}
}
xhr.open(method, url);
if (method == 'POST' && !(data instanceof FormData)) {
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
xhr.send(data);
}
'use strict';
ysAjax('metin.txt', 'GET', null, yazdir);
function yazdir (sonuc) {
console.log(sonuc.responseText);
}
Fonksiyona bu şekilde parametre yollayabiliyorum sonucuda consolda alıyorum.
Burada fonksiyon yerine objeye parametre göndermek istiyorum, fonksiyona değil yani.
</script>
<script>
const alertBox = { //responseText değerini alamadım bu objeye
init(){
this.hideTimeout = null;
this.el = document.createElement('div');
this.el.className = 'alert_box';
document.body.appendChild(this.el);
},
show(message,state){
clearTimeout(this.hideTimeout);
this.el.textContent = message;
this.el.className = 'alert_box alert_box_visible';
/*
alert_box_visible
css de opacity 0, visibility visible oluyor
*/
if(state){
this.el.classList.add(state);
}
this.hideTimeout = setTimeout(() => {
//this.el.classList.remove('alert_box_visible');
}, 3000);
}
};
</script>
Amacım dönen değeri notification alert olarak göstermek.
ne yapmak istediğini tam anlayamadım, verdiğin fonksiyon hiçbir şey yapmıyor? istek objen yok bir kere içinde. eğer istekleri bir fonksiyondan kolayca yöneteyim diyorsan şöyle bir şey yazabilirsin;
function request(url, method, data, calback) {
const request = new XMLHttpRequest();
request.open(method, url);
request.addEventListener('load', callback)
request.send(data);
}
kullanırkende;
const data = {
name: 'tayfun,
surname: 'erbilen'
}
request('ajax.php', 'POST', data, function(e) {
console.log(e.currentTarget.response); // istekten dönen cevabın
})