25
YZM 3215 İleri Web Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1

YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Embed Size (px)

Citation preview

Page 1: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

YZM 3215

İleri Web Programlama

Yrd. Doç. Dr. Deniz KILINÇ

Celal Bayar Üniversitesi

Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım Mühendisliği

1

Page 2: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

BÖLÜM - 10

AJAX

2

Bu bölümde;

AJAX nedir?

AJAX nasıl çalışır?

MVC ve AJAX

jQuery AJAX Uygulaması

ile ilgili konular anlatılacaktır.

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 3: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

AJAX Nedir?

• AJAX (Asynchronous JavaScript ve XML), web

sayfalarında

– JavaScript ve

– XMLHttpRequest

• ortak kullanımı ile etkileşimli web uygulamaları

yaratmaya yarayan web programlama tekniğine

verilen addır.

• Dilimizde AJAX ya da AYAKS şeklinde farklı

söylemlere rağmen İngilizce' de 'ey-ceks' olarak

okunur.

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 4: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

AJAX Nedir? (devam…)

• Hızlı ve dinamik web sayfası yapmayı sağlar.

• AJAX, ilk olarak 2005 yılında Google firmasının

sunduğu Google Suggest ile birlikte popüler

olmuştur.

– Aramak için harfleri girdikçe her harf girişi sunucuya

gönderilir.

– Sunucu harfleri değerlendirir ve geriye cevap olarak

olası önerileri döner.

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 5: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

AJAX Nasıl Çalışır?

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 6: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

AJAX Avantajları

• Güncellemelerde sayfanın tamamının değil istenilen

kısımların sunucuya gidip gelmesidir.

• Örnek: Mesela seçilen şehre göre ilçelerin getirilmesi

gerektiğini varsayalım.

– AJAX kullanılmazsa, sayfadaki tüm işlemlerle birlikte şehre

bağlı ilçe isteği de sunucuya gider, cevap alınıp sayfanın

tamamı tekrar güncellenir.

– AJAX kullanılırsa, sunucuya sadece şehre bağlı ilçelerin

isteği gidip cevap döner ve ekranda gösterilir. Böylece hem

zaman kazanmış hem de ağ trafiğini hafifletmiş oluruz.

Ayrıca ekrandaki güncelleme daha hızlı olduğu için

kullanıcıların beklemesine gerek kalmaz.

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 7: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(1)XMLHttpRequest Nesnesi

• AJAX’ın kilometre taşıdır.

• Arka planda istemci ile sunucu arasındaki veri

iletişiminde kullanılır.

– Bu sayede bir web sayfasının sadece belirli bir bölümünün

update edilmesine imkan sağlanır.

• Tüm modern tarayıcılar tarafından desteklenmektedir.

• Nesne yaratılış biçimi aşağıdaki gibidir:

variable = new XMLHttpRequest();

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 8: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(2)Sunucuya İstek Gönderme

• Sunucuya istek (request) göndermek için

XMLHttpRequest nesnesinin aşağıdaki metotları

kullanılır.

– open()

– send()

• Kullanım şekli aşağıdaki gibidir

xhttp = new XMLHttpRequest()

xhttp.open("GET", "localhost/Main/Index/",true)

xhttp.send()

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 9: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(3)GET mi POST mu?

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

• GET daha basit ve daha hızlıdır ve çoğu durumda

kullanılabilir.

• Ancak GET’in URL cacheleme problemi vardır.

– POST kullanımında böyle bir problem yoktur.

• Ayrıca GET ile sunucuya gönderilebilecek

verinin boyutu sınırlıdır,

– POST’ta veri boyutunda sınır yoktur.

Page 10: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(4)Sunucu Cevabı (Response)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

• Gönderilen istek için sunucudan gelen cevabı okumak

için XMLHttpRequest nesnesinin aşağıdaki

özellikleri kullanılır.– responseText

– responseXML

• Kullanımı aşağıdaki gibidir:

document.getElementById("demo").innerHTML = xhttp.responseText;

Page 11: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(5) onreadystatechange Event

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

• Gönderilen istek sonucunda sunucudan gelen

durumlara göre aksiyon almak için XMLHttpRequest

nesnesine ait kullanılan eventtir.

• Event XMLHttpRequest nesnesinin durumu (status)

olan readState her değiştiğinde tetiklenir.

• Kullanım şekli aşağıdaki gibidir:

Page 12: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

(5) onreadystatechange Event

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 13: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

XMLHttpRequest Örnek Kullanım

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 14: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek1: MVC – AJAX Uygulaması

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

• Yeni bir ASP.NET MVC projesi oluşturalım.

• İçerisindeki tüm Controller’ı View’ları silelim.

• AJAXController isimli yeni bir controller

yaratalım. Index isimli bir tane Action’ı olsun.

• AJAXTest.html dosyasını indirelim ve

projemizde AjaxTest isimli bir klasör açıp,

dosyayı ekleyelim.

https://algoritmaveprogramlama.wordpress.com/

Page 15: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek1: MVC – AJAX Uygulaması (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 16: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek1: MVC – AJAX Uygulaması (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Manuel Action Çağırma

Page 17: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek1: MVC – AJAX Uygulaması (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

AJAX Get ile Çağırma

Page 18: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek2: jQuery AJAX Eklentisi

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

• Aynı ASP.NET MVC projesine:

• ModernController isimli yeni bir controller

yaratalım.

• Şimdilik Index isimli bir tane Action’ı olsun.

• Index View içerisinde 2 tane AJAX Post

denemesi yapacağız.

– Deneme1: SamplePost

– Deneme2: RandomSayiDon

$.get(URL,callback);

$.post(URL,data,callback);

Page 19: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek2: jQuery AJAX Eklentisi (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

$("#btnTest").click(function () {var mesaj = {

Baslik: "Baslik",Aciklama: "Aciklma"

};

$.post("/Modern/SamplePost", mesaj, function (sonuc) {

alert(sonuc);});

});

<div><input type="button" value="AJAX Post" id="btnTest"/>

</div>

Deneme1: SamplePost – View Kısmı

Page 20: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek2: jQuery AJAX Eklentisi (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Deneme1: SamplePost – Controller Kısmı

[HttpPost]public JsonResult SamplePost(){

return Json("İslem Tamam");}

Page 21: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek2: jQuery AJAX Eklentisi (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Deneme2: RandomSayiDon – View Kısmı

<div id="rand">Sayı</div>

//3 saniyede bir Random bir sayı çekiliyorsetInterval(function () {

$.post("/Modern/RandomSayiDon", "", function (sonuc) {$("#rand").html(sonuc);});

}, 3000);

Page 22: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Örnek2: jQuery AJAX Eklentisi (devam…)

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Deneme2: RandomSayiDon – Controller Kısmı

[HttpPost]public JsonResult RandomSayiDon(){

Random r = new Random();int sayi = r.Next(1, 10000);return Json(sayi);

}

Page 23: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Şöyle bir soru gelse…

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Senaryo Bilgi

• Herhangi bir ORM çatısı kullanmadan, sizin

tasarlayacağınız sınıf ve listeyi içeren

• Broadcast mesaj yayını ekleyen ve bu mesajları

listeleyen (Mesaj () + Mesaj Listesi) bir MVC

uygulaması yapınız.

Neler Olacak?

• Model içerisinde VeriKatmani.cs

(Mesaj+MesajListesi)

• MesajController (MesajEkleme,MesajListeleme)

• MesajView (MesajGonderme, MesajListeleme –

setInterval kullanarak)

• Bootstrap

• jSon

• AJAX

Page 24: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

Yararlanılan Kaynaklar

24

• http://www.codeproject.com/Articles/207797/Learn-MVC-

Model-View-Controller-step-by-step-in

• http://www.questpond.com

• Kitap: Programming ASP.NET MVC 5 A Problem

Solution Approach, Nimit Joshi

• http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-

ViewData-vs-ViewBag-vs-TempData-vs-Session.html

• http://www.mvcsharp.com/MakaleDetay/ViewData-

ViewBag-TempData-Nedir

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama

Page 25: YZM 3215 İleri Web Programlama · PDF file1. BÖLÜM - 10 AJAX 2 Bu bölümde; ... Ayrıca ekrandaki güncellemedaha hızlıolduğu için ... •Kitap: Programming ASP.NET

25

İYİ ÇALIŞMALAR…

Yrd. Doç. Dr. Deniz KILINÇ

[email protected]

[email protected]

Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama