2011-09-19 4 views
1

J'ai recherché l'Internet et la documentation de jqGrid, mais je ne peux pas trouver n'importe quoi au sujet du format d'une réponse de JSON à une opération de création, de mise à jour, de suppression (CRUD). Sûrement il devrait y avoir un message JSON qui est retourné de PHP à jqGrid pour lui dire si l'opération CRUD a été réussie? Quel est le format de ce message et comment coderiez-vous le javascript du jqGrid pour répondre à ce message? Je ne suis pas un très bon programmeur, donc des réponses complètes au code seraient grandement appréciées.Comment créer une réponse d'erreur jqGrid JSON de PHP, puis y répondre avec jqGrid javascript?

Merci

Répondre

1

Vous n'avez pas besoin d'utiliser une réponse pour créer, supprimer et mettre à jour.

E.g. Si vous faites une opération de création, vous appelez une "opération ajax" qui ajoute vos données dans une base de données.

Il y a maintenant deux possibilités:

  1. Créer une opération réussit
    • retour juste rien, signifie une chaîne vide
    • (tant que réponse 200 est reçue par jqGrid, tout va bien)
  2. Créer opération a échoué
    • jus t jeter une exception avec un en-tête de réponse modifiée

Si jqGrid reçoit un code non 200 réponse il vous montre une erreur elle-même!

try { 
    // insert something in your db 
    // ok = true means everything fine 
    // ok = false means something unpredictable happened 
    if (!$ok) { 
     throw new Exception('error'); 
    } 

} catch (Exception $e) { 

    header("Status: 500 Server Error caused by dbinsert jqgrid"); 
    var_dump($e->getMessage()); 
} 

Désolé pour le code, mais il était le plus rapide que je sors de mon cerveau maintenant :) J'utilise jqGrid en combinaison avec le Zend Framework et ZF utilise 500 codes de réponse pour les exceptions par défaut (au moins mon template)

Après une mise à jour/suppression/création réussie, vous devez réécrire l'ensemble des données jqGrid.

jQuery("#your_jqgrid_id").jqGrid().trigger('reloadGrid'); 

Il n'existe aucun autre mécanisme. (Utilisé il ya environ 6 mois, cela a peut-être changé)

Si vous voulez implémenter votre propre gestion des erreurs/succès, il vous suffit de définir votre propre message dans le format que vous voulez et de le gérer dans le rappel de la fonction de succès ajax.

Si vous avez besoin de plus de code et que ce n'est pas urgent, envoyez-moi un commentaire.

Un conseil supplémentaire: Ne vous attendez pas à comprendre immédiatement jqGrid. Prenez votre temps, essayez des choses, jouez avec. Cela prendra du temps avant que vous vous sentiez à l'aise avec cela.

+0

Merci qui a aidé. Assez agaçant bien que l'édition en ligne et de forme ne fonctionne pas toujours. L'édition en ligne affiche un message d'erreur correct renvoyé par mon php, tandis que l'édition de formulaire affiche un message différent. Encore à comprendre et à jouer avec le côté javascript de cela. Également un problème où mysql échoue parfois lorsque vous entrez une chaîne dans un champ numérique et parfois ne le fait pas (il met alors simplement un zéro dans le champ numérique). – Superdooperhero

+0

c'est un problème.Vous devez vérifier que les données insérées correspondent à vos tables mysql. Mais cela peut être fait dans les appels ajax. par exemple. vous ne voulez qu'un numéro dans un champ, puis vérifiez s'il s'agit d'un nombre. Si ma réponse vous satisfait, veuillez l'accepter. Si vous n'acceptez pas les réponses ici sur le débordement de pile, vos questions ne recevront presque personne. (Ceci est le taux d'acception vous) – evildead