// page Global
var xapikey = $v("P200_X_API_KEY");
var pageResultItemName='P200_RESULT';
var pageURLItemName='P200_URL';
//Page Methods for the handling of the results
$.showMyError=function(jqXHR, textStatus, errorThrow){
var message_text = 'Error call URL :: ' + $v(pageURLItemName) + '
Error Code :: ' + jqXHR.status + '
';
$s(pageResultItemName, jqXHR.responseText);
apex.message.showErrors([ {
type : "error"
,location : [ "page", "inline" ]
,pageItem : pageResultItemName
,message : message_text
,unsafe : false
}
]);
}
// set my Element on the page
$.setPageItem = function (json) {
console.log(json);
var textJson=JSON.stringify(json,undefined, 4);
$s(pageResultItemName,textJson);
}
// AJAX Methods for the AJAX Call
// before sending something
// show spinner popup
$.onBeforeSend=function(jqXHR ,settings) {
console.log(settings);
$.popup = apex.widget.waitPopup();
}
// if all was fine
// Populate the page Item
$.onSucess = function (response) {
if (response instanceof Object) {
var json = response;
}
else {
var json = $.parseJSON(response);
}
$.setPageItem(json)
}
// if error happens
// show error Message
$.onError = function (jqXHR, textStatus, errorThrow) {
$.showMyError(jqXHR, textStatus, errorThrow) ;
}
// after all is finshed
// this wil be called also after an error!
// remove the spinner popup
$.onComplete = function (jqXHR,errorStatus) {
console.log(errorStatus);
console.log($.popup);
$.popup.remove();
}
//
// overwrite JQuery.ajax for our need
//
$.gpiJSON = function(url
, header
, myMethod
, data
, onBeforeSend
, onSucess
, onError
, onComplete) {
return jQuery.ajax({
'method' : myMethod
, 'url' : url
, 'headers' : header
, 'contentType': 'application/json'
, 'data' : JSON.stringify(data)
, 'dataType' : 'json'
, 'beforeSend' : onBeforeSend
, 'success' : onSucess
, 'error' : onError
, 'complete' : onComplete
});
};
----
=== Verwenden ===
Der Aufruf der Schnittstelle erfolgt über einen Button auf der Seite, das Ergebnis wird in einem Textfeld dargestellt, sehr gut eignet sich dazu dieses Code Mirror Code Editor Plugin für APEX => https://apex.world/ords/f?p=100:710:16328505602228::::P710_PLG_ID:COM.APEXBYG.BLOGSPOT.CODEMIRROR .
Der Button ist mit einer Dynamic Action verknüpft, bei Click wird JavaScript ausgeführt.
Dargestellt sind nur die notwendigsten Fragmente:
apex.message.clearErrors();
.....
if ( call_method == 'POST' ) {
data={
, 'value' : wert
};
//debug - show data
$s("P200_BODY",JSON.stringify(data,undefined, 4));
}
else {
data={};
$s("P200_BODY",{});
}
// define the data Header
header= {
'x-api-key' : xapikey
....
, 'Content-type' : 'application/json'
};
//call
$.gpiJSON (
url
, header
, call_method
, JSON.stringify(data)
, $.onBeforeSend
, $.onSucess
, $.onError
, $.onComplete
);
}
----
==== Quellen ====
JQuery API => http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings