Jquery Ajax GET ve POST arasındaki farklar

POST ile GET arasındaki fark jQuery ile ilgili değil HTTP ile ilgilidir.

Bildiğiniz gibi web uygulamaları request – response denilen istek – cevap mantığı ile çalışırlar. HTTP yedi adet request yani istek tipi tanımlar.

1- GET
2- POST
3- PUT
4- TRACE
5- DELETE
6- HEAD
7- OPTIONS

Metodlar arasında bazı farklar vardır ve kullanım yerleri farklılık gösterir. Tarayıcılar nadiren GET ve POST yöntemleri dışındaki diğer HTTP yöntemleri ile ilgilenir. Örneğin dosya yüklemede (file upload) kullanılan PUT yöntemi yerine MIME veri tipleri ile POST yöntemi ile aynı iş yapılabilir. Çoğu web uygulaması sadece GET ve POST yöntemlerini kullanır.

HTTP’de sunucuya gidebilecek çeşitli istek türleri/metotları bulunur. Bunlar GET, POST, HEAD, DELETE (…) gibi türlerdir.

Get methodu kullanıldığında istekler adres satırında görüntülenir. Gönderilen bilgiler adres çubuğunda görüntülendiği için güvenliği düşük bir yöntemdir ancak daha hızlıdır. Web’te varsayılan yöntemdir.

http://www.cemelma.wordpress.com/index?ad=cem

Post metodu ise adres satırında görüntülenmesi istenmeyen istekler gönderildiğinde kullanılır. Gönderilen bilgiler adres satırında görünmediği için daha güvenlidir ancak Get methoduna göre daha yavaştır. Yani POST durumunda form alanları HTTP REQUEST HEADER içinde kodlanmış olarak gider, adres satırında çıkmaz. Post işleminde her türlü dosyayı post edebiliriz xml,image, file post edebiliriz.

Get metodu sunucudan veri çekmek için tasarlanmış bir metodtur. Post,Put,Delete ise sunucudaki veriyi düzenlemek için tasarlanmıştır. Get metodu sunucudaki veriyi düzenlemek/silmek için kullanılmamalıdır. Örneğin eğer bir veriyi silmek için Get yöntemi kullanan bir bağlantı (link) kullanırsanız, Google bot sitenizi tararken “silme linki”ne bol bol tıklayarak tüm verilerinizi rahatlıkla silebilir.

GET isteğinde belirli bir karakter sayısı sınırı varken (512) POST isteğinde böyle bir sınır yoktur. Örneğin formda bir textarea/ varsa POST kullanmak gerekir, aksi taktirde textarea/ içine yazılan metnin bir kısmı gitmeyebilir.

//Post methodu bu şekilde kullanılabilir

$.post(“@Url.Action(“action”, “controller”)”,{ id: id }, function (data) {

});

C# ile xml request ve response(Soap)

string WSUrl = "http://sdp.test.com.tr/proxy/external"; //Servis Adresiminiz
string soap = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Header><h:token xmlns:h=\"http://sdp.test.com.tr/mapping/generated\" xmlns=\"http://sdp.test.com.tr/mapping/generated\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<sessionId>" + sessionId + "</sessionId></h:token>" +
"</s:Header><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><TestInput xmlns=\"http://sdp.test.com.tr/mapping/generated\">" +
"<REFERANS_ID>referansID</REFERANS_ID>" +
"<REQUEST_TIME>2014-12-18 09:11:59.931</REQUEST_TIME>" +
"<DELIVERY_CHANNEL>ECDS</DELIVERY_CHANNEL>" +
"</TestInput></s:Body></s:Envelope>";

WebRequest req = WebRequest.Create(WSUrl);
req.Credentials = System.Net.CredentialCache.DefaultCredentials;
req.Headers.Add(String.Format("SOAPAction:{0}", "http://sdp.test.com.tr/services/action/test")); //Action adresiminz
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Method = "POST";
Stream stm = req.GetRequestStream();
using (StreamWriter stmw = new StreamWriter(stm))
{
    stmw.Write(soap);
}

string responseString = "";
using (WebResponse response = req.GetResponse())
{
Stream responseStream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream))
{
    responseString = reader.ReadToEnd();
}
}

#region Debit - Response işlemi

if (!String.IsNullOrEmpty(responseString))
{
    XmlDocument document = new XmlDocument();
    document.LoadXml(responseString);
    XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
    manager.AddNamespace("sdp", "http://sdp.test.com.tr/mapping/generated");
    manager.AddNamespace("so", "so:http://sdp.test.com/mapping/TSO");
    XmlNodeList xnList = document.SelectNodes("//sdp:RefId_DirectDebitOutput", manager);

   foreach (XmlNode xn in xnList)
   {
       var getTSOresult = xn["so:TSOresult"]; //Dönen değerleri alabiliriz.
   }
}

#endregion

Jquery ile post

Merhaba, hemen hemen tüm programcıların kullandığı ekranı yenilemeden veri alıp gönderme post methodumuz;

Login butonuna tıkladığımızda kulllanıcı email ve şifresi ile ajax kullanarak işlem yapıyoruz.

$("#login_button").click(function () {
var user = $("#login_email").val(); //emaili alıyoruz
var pass = $("#login_pass").val(); //şifreyi alıyoruz
var rm = false;
if ($('#persist_box').is(':checked')) rm = true; //hatırlatma durumu
$.ajax({
    type: 'POST', //işlemin post olduğunu belirtiyoruz
    url: '/services/front.asmx/DoCompanyLogin', //işlemin yapılacağı servis
    data: "{'user': '" + user + "','pass':'" + pass + "','rm':'" + rm + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (result) {
        alert(result.d); //işlem başarılı
    },
    error: function () {
        alert("hata"); //hata oluşması durumunda hata mesajı veriyor.
    }
});
});

2mw6x3t+