XML Eğitimi

XML ANA SAYFA XML'e Giriş XML nasıl kullanılır XML Ağacı XML Sözdizimi XML Öğeleri XML Öznitelikleri XML Ad Alanları XML Görüntüleme XML HttpTalebi XML Ayrıştırıcı XML DOM'si XML XPath'i XML XSLT'si XML XQuery XML Bağlantısı XML Doğrulayıcı XML DTD'si XML Şeması XML Sunucusu XML Örnekleri XML Testi XML Sertifikası

XML AJAX'ı

AJAX Tanıtımı AJAX XMLHttp AJAX İsteği AJAX Yanıtı AJAX XML Dosyası AJAX PHP AJAX ASP AJAX Veritabanı AJAX Uygulamaları AJAX Örnekleri

XML DOM'si

DOM Tanıtımı DOM Düğümleri DOM Erişimi DOM Düğümü Bilgisi DOM Düğüm Listesi DOM Geçişi DOM Gezinme DOM Değerleri Al DOM Değişiklik Düğümleri DOM Düğümleri Kaldır DOM Düğümleri Değiştir DOM Oluşturma Düğümleri DOM Düğüm Ekle DOM Klon Düğümleri DOM Örnekleri

XPath Eğitimi

XPath Giriş XPath Düğümleri XPath Sözdizimi XPath Eksenleri XPath Operatörleri XPath Örnekleri

XSLT Eğitimi

XSLT'ye Giriş XSL Dilleri XSLT Dönüşümü XSLT <şablon> XSLT <değeri> XSLT <her biri için> XSLT <sıralama> XSLT <if> XSLT <seç> XSLT Uygula İstemcide XSLT Sunucuda XSLT XSLT Düzenleme XML'i XSLT Örnekleri

XQuery Eğitimi

XQuery Tanıtımı XQuery Örneği XQuery FLWOR'u XQuery HTML'si XQuery Terimleri XQuery Sözdizimi XQuery Ekle XQuery Seçimi XQuery İşlevleri

XML DTD'si

DTD Giriş DTD Yapı Taşları DTD Elemanları DTD Özellikleri DTD Elemanları vs Attr DTD Varlıkları DTD Örnekleri

XSD Şeması

XSD Tanıtımı XSD Nasıl Yapılır? XSD <şema> XSD Öğeleri XSD Özellikleri XSD Kısıtlamaları

XSD Kompleksi

XSD Öğeleri XSD Boş Yalnızca XSD Öğeleri Yalnızca XSD Metin XSD Karışık XSD Göstergeleri XSD <herhangi bir> XSD <anyÖzellik> XSD Değiştirme XSD Örneği

XSD Verileri

XSD Dizisi XSD Tarihi XSD Sayısal XSD Çeşitli XSD Referansı

Web Hizmetleri

XML Hizmetleri XML WSDL'si XML SABUN XML RDF'si XML RSS'si

Referanslar

DOM Düğüm Türleri DOM Düğümü DOM Düğüm Listesi DOM AdlıDüğüm Haritası DOM Belgesi DOM Öğesi DOM Özelliği DOM Metni DOM CDATA DOM Yorumu DOM XMLHttpRequest DOM Ayrıştırıcı XSLT Öğeleri XSLT/XPath İşlevleri

AJAX - Sunucuya İstek Gönder


XMLHttpRequest nesnesi, bir sunucuyla veri alışverişi yapmak için kullanılır.


Bir Sunucuya İstek Gönder

Bir sunucuya istek göndermek için XMLHttpRequest nesnesinin open() ve send() yöntemlerini kullanırız:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

GET veya POST?

GET, POST'tan daha basit ve daha hızlıdır ve çoğu durumda kullanılabilir.

Ancak, aşağıdaki durumlarda her zaman POST isteklerini kullanın:

  • Önbelleğe alınmış dosya bir seçenek değildir (sunucudaki bir dosyayı veya veritabanını güncelleyin).
  • Sunucuya büyük miktarda veri gönderme (POST'un boyut sınırlaması yoktur).
  • Kullanıcı girişi göndererek (bilinmeyen karakterler içerebilir), POST, GET'den daha sağlam ve güvenlidir.

GET İstekleri

Basit bir GET isteği:

Örnek

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();

Yukarıdaki örnekte, önbelleğe alınmış bir sonuç alabilirsiniz. Bunu önlemek için URL'ye benzersiz bir kimlik ekleyin:

Örnek

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();

GET yöntemiyle bilgi göndermek istiyorsanız, bilgileri URL'ye ekleyin:

Örnek

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();


POST İstekleri

Basit bir POST isteği:

Örnek

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();

HTML formu gibi verileri POST yapmak için setRequestHeader() ile bir HTTP başlığı ekleyin. Send() yönteminde göndermek istediğiniz verileri belirtin:

Örnek

xhttp.open("POST", "demo_post2.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

url - Sunucudaki Bir Dosya

open() yönteminin url parametresi, sunucudaki bir dosyanın adresidir:

xhttp.open("GET", "ajax_test.asp", true);

Dosya, .txt ve .xml gibi herhangi bir dosya türü veya .asp ve .php gibi sunucu komut dosyası dosyaları olabilir (yanıtı geri göndermeden önce sunucuda eylemler gerçekleştirebilir).


Eşzamansız - Doğru mu Yanlış mı?

Sunucu istekleri eşzamansız olarak gönderilmelidir.

open() yönteminin zaman uyumsuz parametresi true olarak ayarlanmalıdır:

xhttp.open("GET", "ajax_test.asp", true);

Eşzamansız olarak gönderildiğinde, JavaScript'in sunucu yanıtını beklemesi gerekmez, bunun yerine şunları yapabilir:

  • sunucu yanıtını beklerken diğer komut dosyalarını yürütün
  • yanıt hazır olduktan sonra yanıtla ilgilenin

onreadystatechange Özelliği

XMLHttpRequest nesnesiyle, istek bir yanıt aldığında yürütülecek bir işlev tanımlayabilirsiniz.

İşlev, XMLHttpResponse nesnesinin onreadystatechange özelliğinde tanımlanır :

Örnek

xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    document.getElementById("demo").innerHTML = this.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();

Yukarıdaki örnekte kullanılan "ajax_info.txt" dosyası basit bir metin dosyasıdır ve şöyle görünür:

<h1>AJAX</h1>
<p>AJAX is not a programming language.</p>
<p>AJAX is a technique for accessing web servers from a web page.</p>
<p>AJAX stands for Asynchronous JavaScript And XML.</p>

Daha sonraki bir bölümde onreadystatechange hakkında daha fazla bilgi edineceksiniz.


Senkron İstek

Eşzamanlı bir istek yürütmek için open() yöntemindeki üçüncü parametreyi false olarak değiştirin:

xhttp.open("GET", "ajax_info.txt", false);

Bazen hızlı test için async = false kullanılır. Ayrıca eski JavaScript kodunda senkronize istekleri de bulacaksınız.

Kod sunucunun tamamlanmasını bekleyeceğinden, onreadystatechange işlevine gerek yoktur:

Örnek

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

Eşzamanlı XMLHttpRequest (async = false) önerilmez çünkü JavaScript, sunucu yanıtı hazır olana kadar çalışmayı durduracaktır. Sunucu meşgul veya yavaşsa, uygulama askıda kalacak veya duracaktır.

Senkronize XMLHttpRequest, web standardından kaldırılma sürecindedir, ancak bu işlem uzun yıllar alabilir.

Modern geliştirici araçlarının, eşzamanlı istekleri kullanma konusunda uyarmaları önerilir ve bu gerçekleştiğinde bir InvalidAccessError istisnası oluşturabilir.