app

it2022-05-09  40

在返回头的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


最新回复(0)