2013-04-09 90 views
0

我有一个HTML页面下面的AJAX方法:jQuery的AJAX方法调用Web服务接收403禁止

$(document).ready(function() { 
      $.ajax({ 
       type: "POST", 
      url: "http://www.webservice.com/blahblah.asmx/blahb123", 
      data: "tnWsGuid=TEST1", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
       success: function(msg) 
       { 
        alert("sucess") 
       }, 
       error: function(e) 
       { 
        alert(JSON.stringify(e));      
       } 
       }); 
     }); 

回归的我403禁止。一位同事建立了Web服务,我无法访问代码,也没有当前能力在他休假时改变它。我需要显示这些数据 - 在这一点上,我尝试的一切都失败了,并给我一个403禁止的错误。为了显示代码,我已将url名称和成功功能更改为警报对话框。其他

的一件事是,JSON是包裹在XML看来,从ASP.NET web服务,看起来像这样来:

<string xmlns="http://Walkthrough/XmlWebServices/"> 
{"approverName":"","emailAddress":"","companyName":"ABC","address":{"streetAddress1":"12 BlahBlah","streetAddress2":"","state":"ON","zipCode":"","country":"SO","phoneNumber":""},"tabledata:"[{"vendorPart":"AAAAA","partDescription":"N/A","price":"0.00","quantity":"28"},{"vendorPart":"BBBBBBB","partDescription":"N/A","price":"0.00","quantity":"3"},{"vendorPart":"CCCCCC","partDescription":"N/A","price":"0.00","quantity":"25"}]} 
</string> 

这不是本来打算不出我所料获得JSON但是我现在无法做任何事情,必须在XML中处理它,只需将内部格式化的json转换为json对象即可。

我曾尝试为以下太:

$(document).ready(function() { 
       $.ajax({ 
        type: "GET", 
       url: "http://www.webservice.com/blahblah.asmx/blahb123", 
       data: "tnWsGuid=TEST1", 
       dataType: "xml", 
       contentType: "text/xml", 
        success: function(msg) 
        { 
         alert("sucess") 
        }, 
        error: function(e) 
        { 
         alert(JSON.stringify(e));      
        } 
        }); 
      }); 

最后,我将输出从Firefox这里的萤火虫响应的两个例子我试过(JSON/XML)

JSON:http://i.imgur.com/zJy4BvD.jpg

XML:http://i.imgur.com/6qiGVwQ.jpg

非常感谢您的阅读!

+0

调试Web服务以确定拒绝您的请求的原因确实很难,无法访问该Web服务。 – Quentin 2013-04-09 15:18:29

+0

根据您提供的信息非常有限,看起来该服务未授予其他来源的JS访问权限。您无法让网站上的浏览器读取服务中的数据。移动(至少部分)您的逻辑服务器端。 – Quentin 2013-04-09 15:20:17

+0

如果我能够访问Web服务,我正在尝试与这个人联系,特别是我可以做什么来启用此权限? – Surep 2013-04-09 15:25:16

回答

1

那么删除contentType标题似乎是要删除403禁止。

1

如果调用是跨域,那么如果不使用dataType jsonp,则可能会遇到问题。

+0

在chrome上,我在控制台之后出现了跨域问题错误403禁止。然而,jsonp要求我改变web服务的权利?我也想过尝试使用jsonp,但是有两个问题,一个是返回的数据是xml而不是json,我无法有效地改变web服务来处理jsonp请求。 – Surep 2013-04-09 15:28:09