ASP.Net, PHP, MVC vs Web Programlama SQL ve XML Gibi DataSource Tipleri

Aspx json result ve javascript fetch json

MVC’de json result gayet kolay iken farzediyoruz ki web form uygulaması içerisindeyiz. Bu durumda sayfayı tamamen jsonresult olarak elde edebilmek için bazı dolaylı yollar kullanmak gerekir. “.aspx.cs” altında tetiklenen metod’da aşağıdaki satırları yazmamız gerekir.

Sözü geçmişken MVC’de jsonresult hazırlarken CORS ayarı yapmayı es geçmeyelim. Attribute olarak ekleyeceğimiz bir class yapıyoruz.

public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
        base.OnActionExecuting(filterContext);
    }
}

Aşağıdaki gibi bir controller ile döndürüyoruz.

[HttpGet]
        [AllowCrossSiteJson]
        public JsonResult Bildirimler(string jsonuser)
        {
            return Json(jsonuser);
        }
string jsonVerisi= "{id:1, adi:'metin', soyadi:'yakar'}";
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();

Peki bu aspx sayfasını başka bir aspx veya html sayfasındaki dropdown listesinden çağırmak istediniz. Listeyi doldurmak için javascript içerisinde fetch() kullanacağız.

async function apiGetAll() {
    try {
        const resp = await fetch("http://localhost/jsonvals.aspx", 
        {
            mode: 'no-cors',
            cache:'force-cache',
            credentials:'include',
            headers: {
                Accept: 'application/json',
                'Content-Type': 'application/json'
            }
        })
        .then(function(response) {
                if (!response.ok)  {
                    return Promise.reject('Sorun var.');
                }
                else {
                    return response.json();
                }
            })
            .then(function (data) {
                var urlParams = new URLSearchParams(window.location.search);
                var usrno= urlParams.get('id');
                if(usrno==null)
                {
                    document.write("<div style='height:100px;'></div>");
                    document.write("<form style='margin: 0 auto;width: 50%;border: 1px solid gray;padding: 50px;background: #f9f9f9;box-shadow: 2px 2px gray;border-radius: 3px 0;'>");
                    document.write("<h1>Kişi Seçiniz</h1>");
                    document.write("<select id='selector' name='id' style='width: 100%; height: 70px; padding: 15px; font-size: 22px;' onchange='idSecimi()'>");
                    document.write("<option>Seçiniz</option>");
                    for (i in data)
                    {
                        document.write("<option value='" + data[i].id+ "'>" + data[i].adi+ "</option>");
                    }
                
                    document.write("</select>");
                    document.write("</form>");
                }
        });
        return resp;
    } catch (err) {
            console.log(err)
        }
}
window.onload= function(){
    apiGetAll();
};

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir