微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

轻松搞定jQuery+JSONP跨域请求的解决方案

  JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的
<script type="text/javascript">
$.getJSON("http://localhost:3561/User/GetAllNames?callback=?",function(json) {
for (var i = 0; i < json.length; i++) {
$("#nameList").append("

  • " + json[i] + "
  • ");
    }
    });

      服务端的逻辑主要是将数据序列化为json字符串,然后封装成"callback(json)"的形式,callback为jQuery自动生成并传到服务端的函数名称。下面使用C#实现:

    rush:java;"> public class UserController : Controller { public string GetAllNames(string callback) { string[] names = new string[] { "张三丰","张无忌","令狐冲","杨过","郭靖" }; JavaScriptSerializer jss = new JavaScriptSerializer(); string json = jss.Serialize(names); return string.Format("{0}({1})",callback,json); } }
    解决了问题。

     思考:如果服务端已经写死了callback(如:return string.Format("moty({0})",json);),那么客户端该怎么写呢?

     参考:

    rush:js;"> $.ajax("http://localhost:3561/User/GetAllNames",{ jsonpCallback: "moty",dataType: "jsonp",success: function(json) { for (var i = 0; i < json.length; i++) { $("#nameList").append("
  • " + json[i] + "
  • "); } } });

    原文地址:https://www.jb51.cc/jquery/33361.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐