最近使用 hbuilder 来做移动端的混合应用的 app 也就是现在比较获得 html5 hybird app 使用 nativejs 可以调用原生的许多 api,比如说 弹窗窗口 警告框 原生用户提示 toast 日历组件 等等 现在我们来看看遇到的问题,由于我实在本地测试的所以本地的地址也是类似 http://localhost http://127.0.0.1这种的 首先我们来看看客户端代码怎么写(假设使用的是 runtime+项目 现在我们来调用 plus 下面的 XMLHTTPREQUEST) 首先需要保证下面两项是 1.确保手机网络畅通,能访问服务器地址(可用手机浏览器打开请求的网址) 2.确保提交的数据内容格式(XMLHttpRequest 默认提交的 content-type 为“text/plain;charset=UTF-8”)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| mui.ajax('http://server-name/login.php',{ data:{ username:'username', password:'password' }, dataType:'json',//服务器返回json格式数据 type:'post',//HTTP请求类型 timeout:10000,//超时时间设置为10秒; headers:{'Content-Type':'application/json'}, success:function(data){ //服务器返回响应,根据响应结果,分析是否登录成功; ... }, error:function(xhr,type,errorThrown){ //异常处理; console.log(type); } });
|
然后服务器端代码(节选了部分做个参考):
1 2 3 4 5 6 7 8 9 10 11 12 13
| /** * 返回给Ajax使用或者当做移动端的api来进行使用 * @param [type] $data [description] * @return [type] [description] */ function echoJson($data){ if(intval(I('post.ajax',0))){ //允许跨域访问当上线以后就不能允许了这个后面会注释掉 header("Access-Control-Allow-Origin: *"); echo json_encode($data); die(); } }
|
服务器端需要在头信息中写入允许跨域:
1
| header("Access-Control-Allow-Origin: *");
|