2015-06-11 28 views
0

我花了一整天的时间来理解jsonp的工作原理。我已经尝试了很多通过互联网可用的解决方案,但他们都没有为我工作。以下是代码,我正在访问第三方rest API。首先,我用使用jsonp时,Ajax总是返回错误

数据类型: “Json的”

但它给我跨域堵塞错误。我改成了使用

数据类型: “JSONP”

但现在反应总是错误的方法与

textStatus = “parseerror” 和jqXHR结束=“回调不是被称为“。

下面是我的示例代码,请看看

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("document is ready"); 
     window.test = function (data) { 
      debugger; 
     }; 

     $("#btnAuth").click(function() { 
      $.ajax({ 
       url: "https://partner3.powerschool.com", 
       dataType: "jsonp", 
       jsonpCallback: 'test', 
       beforeSend: function (req) { 
            req.setRequestHeader("Authorization", "Basic " + "abc" + ":" + "xyz"); 
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8'); 
       }, 
       success: function (data) { 
        debugger 
        alert("success"); alert(data); 
       }, 
       error: function (data, textStatus, jqXHR) { 
        debugger 
        alert(JSON.stringify(data)); 
       } 

      }); 
     }); 
    }); 
</script> 

回答

0

我建议您尝试jQuery Cross Origin Plugin

它负责幕后所有jsonp的东西,所以你需要做的就是将它从本地ajax调用改为远程调用,就是将该插件添加到你的页面并将crossOrigin: true添加到你的ajax参数列表中。

+0

我试过这个。但随后它发送错误与readystate = 0。 –