需求是:通过webview.loadUrl()加载指定网页,网页中含有
<script>
$(function(){
$.ajax({
url:"http://127.0.0.1:9091/myapp/login",
type:"GET",
dataType: 'jsonp',
jsonp: 'callback',
data: {key:'123456'},
success: function (rsp){
alert(rsp.code);
if(rsp.code == 0){
alert(rsp.code);
window.location.href = "http://myapp.com/index.php";
}else{
alert(rsp.msg);
}
}
});
});
</script>
该方法会向手机的9091端口发送请求,当返回指定字符串"success"时会自动跳转到新页面。
我的做法是通过NanoHttp开启手机端口服务器,并接收到请求后解析参数拿到callback的value:mCallback,返回字符串内容被封装成 mCallback+"({"success"})",传递回去。
刚开始的做法是成功的,明显看到了页面跳转。后来在一些本来正确显示的手机上就出现了问题,比如:1. 开启服务器失败 2. 响应数据后js没有接收到
所有种种能够使用的方式都检查了一遍,如webview的原因,手机本身的问题等等,仍然没有找到原因。同时NanoHttp也是基于Socket协议搭建的服务器,中间经历了一些封装之后使请求、相应、IO流与HTTP请求一样,但为何单独使用Socket去write相同的内容却无法使js响应!
郭老师能否帮忙解答一下上面的两个问题!