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 Kod: Kodu kopyalamak için üzerine çift tıklayın!
<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({
type: submitted_ajax_type,
url: base_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(data, parameters_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(data, parameters_object) {
console.log(data);
}
</script>
Alıntı değildir.