Ajax + apex 4.2 =apex.server. traiter l'API
Cela nécessite que vous disposiez d'un processus au point de traitement à la demande de la page ou d'un processus d'application. Dans celui-ci, vous devez appeler votre fonction et fournir les paramètres, qui peuvent être les éléments de la page. Pour fournir un retour, écrivez des valeurs dans le tampon http avec des appels à htp.p
.
DECLARE
some_var1 VARCHAR2(50);
BEGIN
some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
-- write values back
htp.p(some_var1);
END;
Vous pouvez facilement fournir apex.server.process
avec des éléments de page. La suite de la manipulation est entièrement en javascript.
Note d'avertissement :le dataType est défini par défaut sur JSON, et donc si vous ne fournissez aucun autre type de données par défaut et ne renvoyez pas de chaîne json, vous obtiendrez une erreur d'analyse. Donc, si vous renvoyez un texte dans votre processus à la demande tel que INVALIDE, assurez-vous de définir le type de données sur texte !
apex.server.process ( "MY_PROCESS", {
pageItems: "#P1_DEPTNO,#P1_EMPNO"
}, {
dataType: "text"
, success: function( pData ) {
//pData should contain VALID or INVALID - alert it
alert(pData);
if ( pData === 'INVALID' ) {
// do something here when the result is invalid
// maybe you want to color something red for example
alert('The data you have entered is invalid');
};
}
} );
Je ne diviserais pas cela en actions plus dynamiques que nécessaire, même si cela pourrait être possible. Personnellement, je n'aime pas essayer d'utiliser une vraie action dynamique de bloc PLSQL, simplement parce qu'il est plus obscur d'agir si vous voulez traiter des valeurs de retour.
Il suffit de définir votre bouton pour ne pas soumettre la page, mais l'action défini par une action dynamique. Ensuite, dans l'action dynamique, créez une véritable action de type execute javascript et utilisez l'appel ajax avec le ou les rappels.