Jump to content
-Neiloth-

node js server ile client arasında object transferi

Öne çıkan mesajlar

§ 03 Eki 2019, 11:02

selam herkese, öncelikle web programlama konusunda newbie olduğumu belirtmeliyim, çevremde pek yönlendirecek insan yok self teaching ile elimden geleni yapıyorum ama bazen konseptler karışabiliyor. bu başlıktan beklentim sorunuma yönelik olarak hangi konuda araştırma yapmam gerektiğini belirlemek.

yapmaya çalıştığım şey, client'tan bir obje alıp bu obje üzerindeki parametreleri kullanarak, sunucuda duran fonksiyonlarla bu objeye ekstra parametreler ekleyerek tekrar client'a yollamak istiyorum.

sorunu görselleştirirsem;spacer.png

istediğim, index.html'den  bir post request ile bir obje yollayayım, app.js bu objeyi aldığında içerisindeki bir fonksiyonla update etsin ve tekrar index.html'e yollasın. client.js'de, bir şekilde bu objeyi tanıyarak rutin işlemlerini yapsın.

dosyalarımı ayrı ayrı düzgün bir şekilde çalışıyor. sadece bu objeyi dolaştırma işinde çuvalladım. bunu en sade ve en kolay şekilde yapmak için ne öğrenmeliyim?

teşekkürler.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 12:48

serverda objeyi json yapıp, html'e bir div içerisine yazdırıp görünmez yaptım, client side'daki javamla bu objeyi alıp parse ettim. yani işlemin yarısını yapmayı başardım gibi..

şöyle bir mantık kurmaya çalıştım.

serverdaki javascripte request gelsin bir string ile, onu parse edeyim objeme dönüştüreyim hesaplarımı yapayım html'deki bir div'e yazdırayım.

ciient'daki javascriptim ise, o div'e yazılan metni parse etsin objeye dönüştürsün ve buna göre işlemlerini yapsın sürekli.

çok ilkel oldu sanırım bunun için uygun bir tool olmalı.

link'i inceliyorum, işime yarayacak gibi görünüyor teşekkür ederim.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 13:14

expressle, body parser var orda yalniz.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 13:46
31 dakika önce, aquila dedi ki:

expressle, body parser var orda yalniz.

bu olumsuz bir durum mu acaba? benim için bi sakıncası yok, kullanabiliyorum serverdaki js'imde.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 13:47

yok, kullanmiyosan kafani karistirmasin diye dedim.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 13:57

kafam çorba oldu zaten 😞 c#'da form constructor'ına parametre yollayarak hallettiğim işi html'de yapmak bu kadar zor olmamalı.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 13:59

POST u express kullanarak alıyorsan işlemleri yaptıktan sonra res.json yada res.send ile response gönderebilirsin.

app.post('/varsaurl', (req, res) => {
	// Burada aldıgın data ile istediğin işlemleri yap
    res.send('html/text içerik'); 
  // yada
    res.json({ key: 'value' }); // json içerik.
});

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 15:05

cok guzel sormussun sorunu helal. telefondayim simdi cevap verilmis gibi zaten

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 03 Eki 2019, 15:17

AJAX gondermen gerek bu arada, farkindasindir diye dusunuyorum. Standart form'la GET/POST yapma yontemi sayfayi yeniler ki bu da guncel veriyi sayfaya basabilmek icin index.html'i server tarafinda urettirmen gerektigi anlamina gelir.

Browser destegini su asamada ne kadar onemsiyosun bilmiyorum ama geleneksel olarak Vanilla JS'te XMLHttpRequest'lerle yaptigimiz bu olayi modern browser'larda fetch ile yapabiliyoruz.

Mesela /bisiler diye bi endpoint'te duran ve {foo: 'bar'} gibi bi JSON POST ettiginde bunu {foo: 'bar', baz: 'quux'} yaparak JSON formatinda geri donduren bi servisin var diyelim. Bunu client tarafinda fetch ile soyle cagirabiliyosun

function postJson(data) {
    return fetch('http://localhost/bisiler', {
        method: 'POST',
        mode: 'cors',
        headers: {
            'Content-Type': 'application/json' // baska header'in varsa ekleyebilirsin asagi dogru
        },
        body: JSON.stringify(data)
    })
        .then(response => response.json()); // response json oldugu icin parse ettiriyoruz
}

function doSomething() {
    postJson({foo: 'bar'})
        .then(result => {
            console.log('response geldi', result);
        })
        .catch(err => {
            console.error('hata oldu', err);
        });
}

 

Kojiroh tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 04 Eki 2019, 08:55

dün buraya yazdığımı unutup internette bulabildiğim random şeyleri deneyip yine başaramadım, çok farklı yöntemler yazmışsınız teşekkür ediyorum. bugün tek tek deneyeceğim.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 04 Eki 2019, 14:01
On 03.10.2019 at 16:59, jonq dedi ki:

POST u express kullanarak alıyorsan işlemleri yaptıktan sonra res.json yada res.send ile response gönderebilirsin.

app.post('/varsaurl', (req, res) => {
	// Burada aldıgın data ile istediğin işlemleri yap
    res.send('html/text içerik'); 
  // yada
    res.json({ key: 'value' }); // json içerik.
});

 

şimdi bunu uyguladım ama mantığıma yatmayan şu; ben res.json ile objeyi html'e yolladım ama benim html'imi yollamam gerekmiyor mu tekrar kullanıcıya? html'i yollayabiliyorum bu arada sorunsuz bir şekilde, bu json'ı html'in içine gömebilir miyim?

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 04 Eki 2019, 14:23
22 saat önce, Kojiroh dedi ki:

Standart form'la GET/POST yapma yontemi sayfayi yeniler ki bu da guncel veriyi sayfaya basabilmek icin index.html'i server tarafinda urettirmen gerektigi anlamina gelir. kodu denedim, konsolda response geldi yazısını görebildim. ama result null görünüyor, oysa ben dolu bir json yollamıştım.

 

 

öncelikle şu kavramı oturtmuş oldum teşekkürler, 

ikincisi, evet ben kesinlikle fetch yapmalıyım bence. ama şu metodu denediğimde response geldi yazısını görebiliyorum konsolda ama result null oluyor. yani postJson kısmında bi sorun var sanırım çünkü serverda gelen datayı console'a yazdığımda gördüm ki null gelmiş.

var a = {"a":"1","b":"5","c":"15"};

postJson(a);
doSomething();

 function postJson(data) {
    return fetch('http://localhost:3000/fetch', {
        method: 'POST',
        mode: 'cors',
        headers: {
            'Content-Type': 'application/json' // baska header'in varsa ekleyebilirsin asagi dogru
        },
        body: JSON.stringify(data)
    })
        .then(response => response.json()); // response json oldugu icin parse ettiriyoruz
}

function doSomething() {
    postJson(a)
        .then(result => {
            console.log('response geldi', result);
        })
        .catch(err => {
            console.error('hata oldu', err);
        });
}

bu da serverdaki kodum;

app.post('/fetch', (req,res) => {
 collectRequestData(req, channel => {
    console.log(channel);
    res.json(channel);
 });
});

sanırım şu postJson metodunu düzeltirsem hallolcak.
 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 04 Eki 2019, 15:29

Client'a JSON data gönderip form tarafında gelen datayı parse ederek HTML kısmına istediğin gibi dökebilirsin yada res.send('<div id="bla"></div>');  gibi direk HTML formatında gönderip onu istediğin yere append edebilirsin. İki yöntemde de istediğini yapabilirsin. Json yollarsan HTML şeklinde düzenlemeyi client side da yaparsın, diğerini serverside da yapıp öyle gönderirsin farkı bu. Hatta ek olarak res.send(200); gibi success de dönderip response 200 geldiyse html işlemlerini client tarafında devam da ettirebilirsin.

 

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Kayıt olun ve aramıza katılın!

Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap

Hemen giriş yap



×
×
  • Yeni Oluştur...