Я использую Oracle APEX 21.2.5
. Я пытаюсь установить для свойства dataType значение «текст» вместо значения по умолчанию «json» при вызове apex.server.process
для вызова процесса по запросу с именем «AC
». Проблема возникает, когда мне нужно оценить значение параметра метода объекта "успех" pOptions. С json я мог бы использовать apex_json.open_object, .. write, and close_object
для возврата значений из процесса, который содержит параметр метода «успех». Например, это код процесса....
DECLARE
N NUMBER;
BEGIN
SELECT 1 INTO N FROM DUAL;
apex_json.open_object;
apex_json.write('result', 'ok');
apex_json.close_object;
END;
А это код динамического действия, которое срабатывает при нажатии кнопки...
apex.server.process("AC", {pageItems: "#P1_DNAME, #P1_LOC" },
{success: function(ppData) {
if (ppData = "{result: 'ok'}") {console.info("yes"); }
}
});
Как видите, я смог оценить значение параметра «ppData». Как я могу вернуть текст из процедуры, чтобы иметь возможность оценить его, как я сделал с json dataType?
pData
— это объект json, если dataType: "json"
, и строка, если dataType: "text"
. Обратите внимание, что в вашем коде вы оцениваете json как строку — это можно сделать намного проще, см. пример json ниже.
Вот пример JSON и Text.
Источник процесса приложения:
DECLARE
BEGIN
apex_json.open_object;
apex_json.write('result', 'ok');
apex_json.close_object;
END;
Код JavaScript динамического действия:
apex.server.process(
'getResultJSON', // Process or AJAX Callback name
{}, // Parameter "x01"
{
success: function (pData) { // Success Javascript
if (pData.result == 'ok') {
apex.item( "P51_SUCCESS_JSON" ).setValue("Result of JSON is OK !")
} else {
apex.item( "P51_SUCCESS_JSON" ).setValue("Result of JSON is Not ok :( !")
}
},
dataType: "json"
}
);
Источник процесса приложения:
DECLARE
BEGIN
/* use prn to prevent newline after string (htp.p prints newline).
*/
htp.prn('ok');
END;
Код JavaScript динамического действия:
apex.server.process(
'getResultText', // Process or AJAX Callback name
{}, // Parameter "x01"
{
success: function (pData) { // Success Javascript
if (pData == 'ok') {
apex.item( "P51_SUCCESS_TEXT" ).setValue("Result of TEXT is OK !")
} else {
apex.item( "P51_SUCCESS_TEXT" ).setValue("Result of TEXT is Not ok :( !")
}
},
dataType: "text"
}
);
Это ответ на вызов ajax. Проверьте инструменты разработчика браузера> сеть. Когда процесс ajax будет выполнен, вы увидите там ответ.
Где подпрограммы htp.prn и apex_json возвращают свой вывод? В памяти? Или в ДОМ? Или еще?