none
httpPost RRS feed

  • Soru

  • merhaba bir video izledim videoda ajax post la server tarafına bilgileri gönderiyor 

    ancak gönderdiği yer bir aspx sayfasının load ı değil,direk bir fonksiyon bende bu şekilde aspx sayfasına değil bir fonksiyona göndermek istiyorum 

    ajax kısmında gönderceği url olarak sadece /home/index yazmış oysa video da öyle bir yer yok ve fonksiyon içinde [HttpPost] la verileri yakalamış

    anlamadığım 2 yer var

    1.hangi fonksiyona gönderceğini ajax da nasıl belirtiyor mesela adam Index fonksiyona göndermiş

    2. [HttpPost] hiç bir şekilde ekleyenedim mvc özel bir şeyse bunu muadili olan işi webform da hangi kod yapıyor

    son olarak ajaxdan gelen json yada xml verilerini Deserialize yapamadım bunla ilgili örnek varmı

    teşekkürler

    video

    http://www.youtube.com/watch?v=NBVsHuc3OIE



    9 Mart 2013 Cumartesi 12:42

Yanıtlar

  •         
          xmlhttp.setRequestHeader("content-type", "application/json");
                xmlhttp.setRequestHeader("Accept", "application/json");

    silerek

       xmlhttp.open("POST", "WebForm1.aspx?adi=salman", true);
                xmlhttp.send(null);

    13 Mart 2013 Çarşamba 21:06

Tüm Yanıtlar

  • MVC projesi bu Webforms değil, MVC, UrlRouting marifeti ile hangi controller içindeki methodu çağıracağına karar verebiliyor.

    WebForms ile buna benzer script servisi yapmak istiyorsanız iki seçeneğiniz var; birincisi WebServis ekleyip buna istediğiniz methodu koymak, Diğeride GenericHandler kullanmak, yetenekleri bakımından WebService daha iyidir.

    http://social.msdn.microsoft.com/Forums/tr-TR/aspnettr/thread/7c334f69-cab8-4f78-95fd-2527e3ac195f burda basitçe bir webservis örneği var jQuery ajax için.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    9 Mart 2013 Cumartesi 13:22
    Moderatör
  • teşekkürler önay bey ancak dediğiniz gibi webservice baktım ancak webservice sadece framework 3.5 da ekleniyor yada sadece website projesinde ekleniyor

    ben 4.5 kullanıyorum web servis için projeyi 3.5 çekmem lazım problem olmayacakmı ?

    webservice bildiğimiz wcf le bir farkı varmı ? çünkü eğer aynı işlemi yapıyorsa ben projemde servis kullanmak istemiyorum sırf fonksiyona göndermek için servis mi kullanmam lazım ?


    9 Mart 2013 Cumartesi 13:34
  • hayır sanırım yanlışınız var webservice 4, 4.5 hepsine eklenir. 

    wcf, web servisin daha yeteneklisi wcf ile yapabiliyorsanız misli misli işinizi görür.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    9 Mart 2013 Cumartesi 17:27
    Moderatör
  • önay bey teşekkür ederim sadece son bir sorunum kaldı baya uğraştım yapamadım

    ajax la generichandler içine veriyi 2 şekilde gönderiyorum

    form serialize ederek

      $.ajax({
                url: '../GenericHandler.ashx',
                data: $('form1').serialize(),
                type: 'POST'            
            });

    yada x nesneyi göndererek

    var value = dxtextname.GetText();          
                   
            $.ajax({
                url: '../GenericHandler.ashx',
                data: "value"+value,
                type: 'POST'            
            });

    handler

    public class GenericHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { var name = context.Request["value"]; // tek kayıt için
    var name = context.Request.Form["dxtxtname"]; // form için

    } }


    sorumsa şu bir list olan kayıtları toplu olarak göndermek istersem handler da nasıl karşılıycağımı bulamadım ?

     var values = {
                Name: dxtextName.GetText(),
                LastName: dxtextLastName.GetText(),
                Mail: dxtextMail.GetText(),
            }

    çünkü handler da 

    var name = context.Request["Name"];

    var LastName= context.Request["LastName"];

    şeklinde alamıyorum ve aslında bunları direk desiralize ederek bir struct

    yapısına eşitleyemezmiyim ?


    10 Mart 2013 Pazar 10:43
  • İşte o işi WebService yapıyor ama siz nedense kullanmak istemiyorsunuz. List<T> tipindeki verinizi serialize edip servis ediyor. İsterseniz scripte isterseniz SOAP ile uygulamalara servis ediyor.

     Handler kullanmakta bir çözüm, handlere get ile gönderdiğiniz veriyi context.Request["key"] ile, post ile gönderdiğiniz veriyi context.Request.Post["key"] ile alabilirsiniz. Ama script için JSON öneririm. Ayrıca jQuery ajax ı $.getJSON ya da $.post ile kullanın.

    Profilimde facebook bağlantım var ekleyebilirsiniz.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    10 Mart 2013 Pazar 13:03
    Moderatör
  • önay hocam ben bir türlü anlayamıyorum ,dışarıya servis açmak istemiyorum benim amacım

    sayfa postback olmadan ajax la json yada xml formatında verileri function katmanında ki x fonksiyonu çalıştırmak,bunun için dediğiniz gbii handler işimi gördü ancak ondada verileri list olarak karşılayamıyorum

    sizde illa servis kullancaksın diyorsunuz,işte ben kendi projemde yapıcağım bir iş için buna zorunlumuyum ? yoksa anlayamadım mı ?

    10 Mart 2013 Pazar 15:43
  • İşin hakkı ne ise onunla yapılmalı, generichandler'in ulaşılamaz olduğunu düşünüyorsanız yanılıyorsunuz. Sonuçta normal yada asenkronize tüm talepler client e servis ediliyor. Verilerin dışarıdan alınmasını istemiyorsanız hiç birşekilde göndermeyeceksiniz (:.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    10 Mart 2013 Pazar 15:53
    Moderatör
  • xmlhttprequest kullanabilirsin.

            function VeriYolla() {
                var xmlhttp;
                 xmlhttp = new XMLHttpRequest();
                xmlhttp.open("POST", "WebForm1.aspx/Veri", true);
                xmlhttp.setRequestHeader("content-type", "application/json");
                xmlhttp.setRequestHeader("Accept", "application/json");
                xmlhttp.onreadystatechange = function () {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                        alert(JSON.parse(xmlhttp.responseText).d);
                    }
                };
                xmlhttp.send(JSON.stringify({ adi: "salman", soyadi: "arslan" }));
            }
            [System.Web.Services.WebMethod]
            public static string Veri(string adi, string soyadi)
            {
                return (adi + " " + soyadi).ToUpper();
            }


    10 Mart 2013 Pazar 17:49
  • teşekkürler salman bey peki bunda list formatında alma yapabiliyormuyuz ?
    • Düzenleyen mustafa3434 13 Mart 2013 Çarşamba 10:18
    13 Mart 2013 Çarşamba 10:18
  • JSON.parse(xmlhttp.responseText).d

    bunu özellikle yazdimki  webmetod un geri donuş degeri string bool int dişinda bile olsa

    yukaridaki kod ile parse edilir ardindan onu bir değişkene atip for ile dönüp sonuçlari yazdirirsin

    13 Mart 2013 Çarşamba 17:39
  • yalnız 

    WebForm1.aspx/Veri

    ben aspx sayfasına değil bir cs dosyasındaki fonksiyonu çalıştırmak istiyordum salman bey,aspx şeklinde yapmıştım bu şekilde yaparsam page_load gerekli bana


    • Düzenleyen mustafa3434 13 Mart 2013 Çarşamba 20:51
    13 Mart 2013 Çarşamba 20:51
  •         
          xmlhttp.setRequestHeader("content-type", "application/json");
                xmlhttp.setRequestHeader("Accept", "application/json");

    silerek

       xmlhttp.open("POST", "WebForm1.aspx?adi=salman", true);
                xmlhttp.send(null);

    13 Mart 2013 Çarşamba 21:06