IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   HTML/CSS/JavaScript (https://www.ircforumlari.net/html-css-javascript/)
-   -   Web Services Caller Function (Javascript) (https://www.ircforumlari.net/html-css-javascript/724632-web-services-caller-function-javascript.html)

ChuckyFun 26 Ocak 2016 13:38

Web Services Caller Function (Javascript)
 
Merhaba,

Web servis kullandığım neredeyse bütün projelerde kullandığım bir javascript fonksiyonu, kullanımı oldukça kolaylaştıran bir yapıdır. Bir çoğunuzun işine yarayacağına eminim.

PHP- Kodu:

<script type="text/javascript">
    
/**
     *
     * parameters_object için tanımlı değişkenler
     *
     * custom_success_function: Servis başarıyla cevap döndürdüğünde çağırılacak varsayılan fonksiyonun dışında bir fonksiyon adı
     * custom_error_function: Servis başarıyla cevap döndürmediğinde çağırılacak varsayılan fonksiyonun dışında bir fonksiyon adı
     *
     * Kullanımı
     *
     * var parameters_object = { user_id: 1, receiver_user_id: 2, conversation_id: 3 };
     * call_web_service('get_messages', parameters_object, 'GET');
     *
     * param action: Web servisin adı
     * param parameters_object: Web service gönderilecek parametrelerin bulunduğu obje
     * param ajax_type: GET veya POST, default olarak GET
     * param base_url: Eğer default servisin yolundan farklı bir servise gönderecekseniz bu parametreyide gönderebilirsiniz.
     * returns {boolean}
     * 
     */
    
function call_web_service(action,parameters_object,ajax_type,base_url){

        
// Bazı kontroller için ajax çağırımının başladığını belirtiyoruz
        
ajax_running true;

        if(
action.length>1){
            
            
// Eğer web servis ismi varsa herşey yolunda demektir
            
        
}else{
            
            
ajax_running false;
            return 
false// Web servis ismi boş olduğu için fonksiyonu burada kesiyoruz
            
        
}

        var 
post_data=parameters_object;
        var 
parameters_object_length=Object.keys(parameters_object).length;

        if (
parameters_object_length>0){
            
            
// Eğer gönderilen obje boş değilse herşey yolunda demektir
            
        
}else{
            
            
ajax_running false;
            return 
false// Hiç bir veri gönderilmediği için fonksiyonu burada kesiyoruz
            
        
}

        
submitted_ajax_type="GET"// Varsayılan olarak GET ayarlandı, POST işlemini yalnızca şifre eposta veya kredi kartı gibi bilgileri gönderecekseniz kullanmanızı tavsiye ediyorum
        
        
if(ajax_type=="POST"){
            
submitted_ajax_type="POST";
        }

        if(
base_url.length>5){
            
            
// Eğer farklı bir servis yolu girilmişse başına çift slash ekliyoruz
            
base_url="//"+base_url;
            
        }else{
            
base_url=""// Girilmemişse boş bırakıyoruz
        
}

        
// jQuery ajax fonksiyonu yardımıyla web servisimizi çalıştırıyoruz
        
$.ajax({
            
typesubmitted_ajax_type,
            
urlbase_url+"/web_services/"+action+"/?",
            
cache:     false,
            
data:     post_data,
            
success: function(data) {

                
ajax_running=false;

                
// Servis başarıyla cevap verdiğinde otomatik olarak bu servise ait bir başarılı fonksiyonu çağırıyoruz
                // Örneğin servisin adı get_messages ise başarıyla cevap döndüğünde success_get_messages fonksiyonu çağırılıyor
                // Eğer başarıyla cevap döndüğünde çağırılmasını istediğiniz fonksiyon farklı ise bunu gönderilen parametreler arasına 'custom_success_function' adıyla eklemeniz gerekmektedir
                
if(typeof parameters_object.custom_success_function != 'undefined' && typeof window[parameters_object.custom_success_function] === 'function') {
                    
window[parameters_object.custom_success_function](data,parameters_object);
                } else if (
typeof window["success_"+action] === "function"){
                    
window["success_"+action](data,parameters_object);
                }
                else{
                    
// Fonksiyon bulunamadı ama her şey yolunda, cevap başarıyla döndü
                
}

            },
            
error: function(data){

                
ajax_running=false;

                
// Servis başarıyla cevap vermediğinde otomatik olarak bu servise ait bir hata fonksiyonu çağırıyoruz
                // Örneğin servisin adı get_messages ise başarıyla cevap dönmediğinde error_get_messages fonksiyonu çağırılıyor
                // Eğer başarıyla cevap dönmediğinde çağırılmasını istediğiniz fonksiyon farklı ise bunu gönderilen parametreler arasına 'custom_error_function' adıyla eklemeniz gerekmektedir
                
if(typeof parameters_object.custom_error_function != 'undefined' && typeof window[parameters_object.custom_error_function] === 'function') {
                    
window[parameters_object.custom_error_function](data,parameters_object);
                } else if(
typeof window["error_"+action] === "function"){
                    
window["error_"+action](data,parameters_object);
                }
                else{
                    
// Fonksiyon bulunamadı ve servis başarıyla cevap döndüremedi !
                
}

            }
        });
    }

    
/**
     *
     * Servis başarıyla cevap döndürdüğünde çağırılan varsayılan fonksiyon
     *
     * param data: Servisten dönen veriler
     * param parameters_object: Servise gönderdiğimiz veriler
     *
     */
    
function success_get_messages(dataparameters_object) {
        
console.log(data);
    }

    
/**
     *
     * Servis başarıyla cevap döndürmediğinde çağırılan varsayılan fonksiyon
     *
     * param data: Servisten dönen veriler
     * param parameters_object: Servise gönderdiğimiz veriler
     *
     */
    
function error_get_messages(dataparameters_object) {
        
console.log(data);
    }
</script> 

Alıntı değildir.

YazılımMimarı 07 Ocak 2017 14:11

Cevap: Web Services Caller Function (Javascript)
 
Elinize sağlık.

Teknik açıdan okunabilirlik adına iyileştirmeler yapılabilit.

Kod:

        ajax_running = true;

        if(action.length>1){
           
            // Eğer web servis ismi varsa herşey yolunda demektir
           
        }else{
           
            ajax_running = false;
            return false; // Web servis ismi boş olduğu için fonksiyonu burada kesiyoruz
           
        }

daha anlaşılır ve okunabilir hali..

else'e gerek duymadan.. eğer validate değil ise, akışı kes.

if(action.length<1){
return false; // Web servis ismi boş olduğu için fonksiyonu burada kesiyoruz
}

---

ajax_running -> bu değişken ne işe yarıyor pek kesitremedim.

validate olmayan her noktada false atanmış. ws call sonrasındaki fail/sucess durumundada false atanmış.

Kafa karışıklığı dışında herhangi bir katkısı yok anladığım kadarıyla, olmasada olur bu fonksiyon için.


Diğer açıdan, PUT tipini gönderilse fonksiyonu çağıran GET gibi davranacak, bu da bir diğer handikap.


Kolay gele.

ChuckyFun 07 Temmuz 2017 18:04

Cevap: Web Services Caller Function (Javascript)
 
"ajax_running" değişkeni benim projemde bir sayfada aynı anda birden fazla web servis çalışmaması durumları için kullanılıyordu.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 08:17.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk