Вызов адаптера Worklight из внешнего приложения
Я развернул адаптер на сервере Worklight, и существует некоторое требование, при котором я вызываю адаптер Worklight извне как серверная комната отдыха, он работает нормально и возвращает данные по мере необходимости, но вместо вывода json он дает HTML
<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Invoke Procedure Result</title><script src="/secure/console/js/jquery-1.6.min.js"></script><style> textarea { width: 100%; } .textwrapper { margin: 5px 0; padding: 3px; }</style></head><body onload="attachEvent();"><div><span id="invRes">Invocation Result of procedure: 'Authentication' from the Worklight Server</span>: </div><div id="target"><textarea rows="20">{
"RESPONSE": {
"USER_ID": "292265"
},
"errors": [
],
"info": [
],
"isSuccessful": true,
"responseHeaders": {
"Content-Length": "1195",
"Content-Type": "text\/xml;charset=ISO-8859-1",
"Date": "Thu, 21 Nov 2013 10:10:13 GMT",
"Server": "Oracle GlassFish Server 3.1.2.2",
"X-Powered-By": "Servlet\/3.0 JSP\/2.2 (Oracle GlassFish Server 3.1.2.2 Java\/Oracle Corporation\/1.7)"
},
"responseTime": 4234,
"statusCode": 200,
"statusReason": "OK",
"totalTime": 4235,
"warnings": [
]
}</textarea></div><script>function attachEvent() {$('#target').ajaxError(function(e, xhr, ajaxOptions, thrownError){$(this).text("Error: Please ensure that the XML input and XSL transformation are valid and try again.");});}function run_xslt() {var xml = $('#originalXML').val();var xsl = $('#originalXSL').val();$.post('/secure/dev/xslt',{'xml':xml,'xsl':xsl},function(data, textStatus, XMLHttpRequest){$('#target').empty();json = $("<textarea></textarea>");json.attr("rows",25);json.text(data);$('#target').append(json);$('#invRes').text('Result of Local XSL Transformation');},'text');}</script></body></html>
в коде я снова анализирую его из HTML и сохраняю json в строку. Только тогда я могу использовать это. Это приведенный ниже URL-адрес для внешнего вызова адаптера согласно документам рабочего освещения.
http://worklightserver.com/secure/dev/invoke?adapter=Reports&procedure=Authentication¶meters=%5B%5D
2 ответа
Удалить /dev/ component из URL, это только для целей разработки. без этого вы получите свой JSON.
У меня была та же проблема, и после прочтения ответов Антона я установил "dataType" вызова Ajax на "text", а затем отредактировал ответ, удалив /*-secure- и */, а затем проанализировал строку, чтобы получить JSON "JSON.parse(theString)"
$.ajax({
type: 'POST',
url: ajaxURL,
async: true,
cache: true,
timeout: 5,
dataType: "text",
success: function(data){
data = data.replace("/*-secure-","");
data = data.replace("*/","");
var dataJSON = JSON.parse(data);
//Do success
},
error: function(data, statusCode){
//Do error
}
});