在返回头的content-type中设置为application/json利用Appcan的Native模式开发的widget,也是属于跨域访问的范畴,因此,也会碰到上述情况,这里介绍两种Appcan中的解决方案:一、Jquery的$.getJSON(url,function(data){});
第一个参数是url获取数据地址,第二个参数成功取得数据时调用; 其中,url中必须带有jsoncallback参数,参数值为"?",Jquery会在请求时替换为一个随机的唯一数:http://xxxx.php?jsoncallback=?&name1=value1&name2=value2
用$.getJSON时,数据的返回格式要是xxx({"a":"1","b":"2"}) 例如: xxx({"status":"true","listData":[{"id":"261803","title":"虚拟投影键盘","name":"前沿科技","summary":"这款虚拟投影键盘设计独特,每一个敲击都不会相互干扰,可以同时接受。"},{"id":"261994","title":"科学家发现"最大黑洞"","name":"环球快递","summary":"美国加州大学伯克利分校的天文学家尼古拉斯•麦克康纳尔和他的同事发现了两个目前已知最大的黑洞。"}}]}) 注意:需验证{"a":"1","b":"2"}json格式的正确性,可在jsonlint.com网站上验证,如果格式不合法将获取不到数据二、Appcan封装的uexXmlHttpMgr对象
方法如下: uexXmlHttpMgr.open(String inXmlHttpID, String inMethods, String inUrl);第一个参数:
inXmlHttpID:异步请求操作ID;必须值。(随机不重复)第二个参数:
inMethods:异步请求类型;(get,post)第三个参数:
inUrl:异步请求地址; 通过uexXmlHttpMgr.onData函数获取值。 uexXmlHttpMgr.onData(inOpCode,inResult) inOpCode:操作ID,由发起请求时传入的值,随机不重复; inResult:服务器返回的任意数据;String类型。 使用方式:<!DOCTYPE HTML><html> <head> <title>跨域异步请求接口</title> </head> <body> <div class="tit">跨域异步请求接口</div> <div class="conbor" id="my_result"></div> <script type="text/javascript"> var url="http://192.168.1.5/musicmodel/api/user.api.php?m=param&appid=1000"; function xmlHttp(){ uexXmlHttpMgr.open("1", "GET",url,""); uexXmlHttpMgr.send("1"); } function httpSuccess(opid,stauts,result){ document.getElementById("my_result").innerHTML =result; uexXmlHttpMgr.close("1"); } window.uexOnload = function(){ uexXmlHttpMgr.onData = httpSuccess; uexWidgetOne.cbError = function(opCode, errorCode, errorInfo){ alert(errorInfo); } } </script> </body></html>
该方法返回数据只要是正确的json格式就可以;转载于:https://www.cnblogs.com/zhaoqiangxiaoxiao/p/3347054.html
