konto usunięte

Temat: Xajax

Witam. Postanowiłem pobawić się xajaxem. no i mam problem. mam taką funkcję
PHP

public function delRow($id)
{
$sql = $this->db->query('DELETE FROM employees WHERE employee_id = '.$id );

/*** a new xajax response object ***/
$objResponse = new xajaxResponse();


/*** return the object response ***/
return $objResponse;


Jak nie trudno zauważyć usuwa ona rekord z bazy danych. Chciałbym aby funkcja zwracała false lub true do xajaxa. Aby potem wykorzystać to w jquery:


function removeUser(id){
var txt = 'Czy na pewno chcesz usunąć wybrany element?<input type="hidden" id="userid" name="userid" value="'+ id +'" />';
$.prompt(txt,{
buttons:{Usuń:true, Anuluj:false},
callback: function(v,m,f){
if(v){
var uid = f.userid;
data = xajax_delRow(id);
if(data==true) {
$('#userid'+uid).hide('slow', function(){ $(this).remove(); });
}
else {
$.post('removeuser.php',{userid:f.userid}, callback:function(data){
}
}
else{}
}
});
}


Czy wgl ma to prawo działać :)??
chodzi mi o obsługę błędów.

obecnie skrypt działa. Xajax fajnie usuwa rekordy bez przeładowania strony ale wolałbym jednak aby wyrzucał komunikat jeśli coś się nie uda oraz żeby nie zwijał diva.

obecnie ten kawałek funkcji jquery wygląda tak:


function removeUser(id){
var txt = 'Czy na pewno chcesz usunąć wybrany element?<input type="hidden" id="userid" name="userid" value="'+ id +'" />';
$.prompt(txt,{
buttons:{Usuń:true, Anuluj:false},
callback: function(v,m,f){
if(v){
var uid = f.userid;
data = xajax_delRow(id); $('#userid'+uid).hide('slow', function(){ $(this).remove(); });
}
else{}
}
});
}


Mam nadzieję, że ktoś miał z tym styczność. Jeśli coś jest niezrozumiałego to proszę pisać.Piotr Burant edytował(a) ten post dnia 10.02.11 o godzinie 23:13

konto usunięte

Temat: Xajax

Jeżeli chodzi o sam alert to rozwiązanie jest proste. Musisz obsłużyć to w try/catch


public function delRow($id)
{


/*** a new xajax response object ***/
$objResponse = new xajaxResponse();

try{
$sql = $this->db->query('DELETE FROM employees WHERE employee_id = '.$id );
}catch(Exception $e){
$objResponse->alert($e->getMessage);
}

/*** return the object response ***/
return $objResponse;


A gdybyś chciał wykonać jakiś kod to możesz to robić tak

$objResponse->script('$('#div').show();');

konto usunięte

Temat: Xajax

Dzięki za pomoc :), że też nie pomyślałem o wyjątkach. No to spróbuję przerobić ten kod. Myślę, że powinno się udać. O efektach poinformuję.

konto usunięte

Temat: Xajax

Jak już będziesz przerabiał to zajmij się też odpowiednim filtrowaniem danych.Nie wpuszczaj $id do kwerendy bezpośrednio gdyż prosisz od razu o XSS. Odpowiedni poziom paranoi w kwestii zabezpieczeń to podstawa :D.

konto usunięte

Temat: Xajax

Tak, wiem o tym. Obecnie sobie próbuje i patrze co potrafi xajax. Pozniej chce to podpiąć pod zenda i już porządnie napisać.

A jeśli chodzi o mój problem to jest rozwiązany. Gdy występuje jakiś wyjątek to wyświetlam komunikat.

A gdy wszystko przebiega dobrze zwijamy diva o odpowiednim id :)

Wielkie dzięki za pomoc.Piotr Burant edytował(a) ten post dnia 11.02.11 o godzinie 12:40

konto usunięte

Temat: Xajax

A czy Xajax umożliwia wstawienie na czas wykonywania skryptu czegoś co pokaże użytkownikowi, że coś się dzieje? np. jakiś gif animowany, lub tekst informujący?

konto usunięte

Temat: Xajax

Ja wywołuję sobie w objResponse->script('GLoading('#div');'); który jest niczym innym niż overlayem z ikonką progress. Stwórz sobie globalnie dostępną funkcję (możesz podejrzeć w Gekosale) i wykonaj ją xajaxem.

O samym fakcie że coś się dzieje możesz poinformmować też zmieniając sam config xajaxa

$xajax->setFlag('waitCursor', true);

Następna dyskusja:

Problem z sesją i xajax.




Wyślij zaproszenie do