v2.5.2
Giriş yap

javascript obje ye dışarıdan parametre eklenirmi.

kartal
500 defa görüntülendi

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>

Cevap yaz
Cevaplar (3)
kartal
1270 gün önce

https://www.youtube.com/watch?v=kkuZTAMyAFI

Buraya bakarsan anlayacaksın.

kartal
1270 gün önce

<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.

tayfunerbilen
1270 gün önce

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
})