`
aijezdm915
  • 浏览: 400706 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ajax 跨域请求 JSONP 实践

    博客分类:
  • js
阅读更多

 

 

一直对jQuery 的jsonp 调用比较疑惑,今天研究了一下jsonp 做了一个简单的调用例子,我用asp做服务端s

客户端(url:http://192.168.1.2:81/jsonp_test.asp)

客户端页面首先在body 中放置一个div: <div id="res"></div> 将远程调用的数据写入该div中


<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
   $(document).ready(function(){
   var html = "";
     $.ajax({
         type: 'GET',
         url:'dowith.jsp',
         dataType:"jsonp",
         jsonp:"jsonpcallback",
         error:function(xmlHttpRequest,error){
          alert(error);
         },
         success:function(data){
          $.each(data,function(i,v){
           html +="<p>id:" +v['id']+  " name:"  +v['name']+" </p>";
          });
             $("#res").append(html);
         }
    });
});
</script>

 

服务端(url:http://192.168.1.5/jsonp_proc.asp
代码很简单,就是输出一个字符串
比如正常输出json应该是:[{"id":"1","name":"测试1"},{"id":"2","name":"测试2"}]
jsonp 则输出: jsonpcallback([{"id":"1","name":"测试1"},{"id":"2","name":"测试2"}]) 其中“jsonpcallback”是客户端传过来的


response.setContentType("application/json; charset=utf-8");
String jsonpcallback = request.getParameter("jsonpcallback");
String str = "[{\"id\":"+100+",\"name\":\"aije\"},{\"id\":"+200+",\"name\":\"liruqin\"}]";
str = jsonpcallback+"("+str+")";
out.write(str);

由于 jquery 在ajax 处理中使用的是utf-8编码传递参数的,所以jsonp处理端用utf-8的编码最好,这样省得编码转换了

<div id="res"></div>


最终效果截图:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics