0

我正在使用 JSONP 进行 AJAX 跨域调用,如下所示:

 $(document).ready(function () {
          $("#btnWCFREST").click(function () {
          $.ajax({
                  type: "GET",
                  url: "http://localhost:1415/MyService.svc/rh/data?id=4&callback=mycallback",
                  processData: false,
                  dataType: 'jsonp',
                  jsonpCallback: 'mycallback',
                  jsonp: 'callback'


              });


          });
      });

      function mycallback(data) {
          alert(data);
      };

我没有得到任何回应。有人可以帮我解决这个问题吗?通话有什么问题?

我已将呼叫更改为以下仍然没有运气:

 $(document).ready(function () {
          $("#btnWCFREST").click(function () {
                 var url = "http://localhost:1415/MyService.svc/rh/data?id=4";
                  $.getJSON(url + "?callback=?", null, function(data) {
                    alert(data);
                });
         });
      });
4

2 回答 2

1

Jquery 的ajax文档:添加一个额外的“?callback =?” 到 URL 的末尾以指定回调。您的 url 不符合该要求,因此它被视为JSON(而不是JSONP)请求,这将受到同源策略的限制。您可以参考 Stackoverflow 上的一个工作示例:jsonp with jquery。此外,您应该确保跨域服务器支持 JSONP。

于 2013-01-01T07:12:26.480 回答
0

尝试添加crossDomain : true您的 Ajax 设置:

       $.ajax({
              type: "GET",
              url: "http://localhost:1415/MyService.svc/rh/data?id=4&callback=mycallback",
              processData: false,
              dataType: 'jsonp',
              jsonpCallback: 'mycallback',
              jsonp: 'callback',
              crossDomain: true
       });
于 2013-01-01T07:11:16.097 回答