2013-11-21 42 views
3

我已经在Worklight服务器上部署了适配器,并且存在一些要求,我从外部将worklight适配器作为其余的serverice调用,它工作正常并根据需要返回数据,但不是提供json输出它是给的HTML从外部应用程序调用Worklight适配器

<!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到字符串。然后只有我可以使用它。这是根据Worklight文档在外部调用适配器的网址。

http://WorklightServer.com/secure/dev/invoke?adapter=Reports&procedure=Authentication&parameters=%5B%5D

+0

你能提供你有你的适配器过程中实现什么样的更多信息,你从它 – Srik

+0

返回什么我有工作灯6版本中实现适配器和返回类型在适配器中是xml。如果我通过调用过程方法从worklight服务器运行适配器,它将给出json输出,但是我从url访问它正在返回包含json而不是上面提供的json的html。 –

+0

@vishal_g您能否提供描述此主题的worklight doc链接? –

回答

4

删除的/ dev /从URL组成部分,它是仅用于开发便于目的。没有它你会得到你的JSON。

+0

是的,现在在删除/ dev后给json添加/ * - secure- jsonData * /。而当我给Ajax调用时,返回的数据我没有得到。在浏览器上显示带有/ * - jsondata * /的json数据。帮助我与这 –

+1

你总是会得到JSON裹在/ *安全* /。这是为了防止使用WL服务器进行XSS攻击 – Anton

1

我有同样的问题,在阅读Anton的答案后,我将Ajax调用的“dataType”设置为“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     
      } 
     }); 
相关问题