【问题标题】:AJAX POST JSON to .NET Webservice gives 500 Internal Server ErrorAJAX POST JSON to .NET Webservice 给出 500 内部服务器错误
【发布时间】:2011-10-06 08:54:09
【问题描述】:

我正在尝试使用带有 AJAX 的 .NET Web 服务并想要一个 JSON 响应。一切正常。我已经使用了 fiddler 并获得了适当的 Json returnet。在浏览器中使用纯 URL 也会给出适当的 XML。

即使使用 PHP Curl 也会给我正确的 JSON 作为响应,但是当我尝试使用 AJAX 时,我得到一个“500 内部服务器错误”。

任何帮助,谢谢。

<script>        
    $(document).ready(function() {
        $.ajax({
        type: "POST",
        url: "http://localhost:9000/APIs/BuyVoucherService.asmx/HelloWorld",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {
            alert(data);
            },
        error: function(data){
        alert(data);
        }
     });
});  
</script>  

【问题讨论】:

  • 你为什么要发帖?当您在浏览器中访问该页面时,这是一个 GET。尝试将类型更改为 GET。另外,发布 500 错误的全文。
  • 从 .asmx 网络服务获取 JSON 时,您必须使用 POST 和 contentType application/json,否则它只会返回 XML
  • 我意识到的问题是,由于跨域问题,这不会起作用。让 AJAX 调用与跨域解决方案一起使用的解决方案是使用 JSONP。 json-p.org了解更多信息
  • 显然错误来自服务器端。你能展示一下网络方法吗?
  • 是的,这是服务器端错误。正如我所说,问题是服务和站点托管在不同的域上。因此,如果我想让 AJAX 工作,我不得不使用 JSON-P。

标签: asp.net ajax json web-services


【解决方案1】:

您的请求中似乎省略了数据定义,请尝试添加如下内容:

data: "{}", 

【讨论】:

  • 我省略了数据:“{}”,因为我不想发送任何数据。但我得到与数据相同的结果:“{}”或数据:{}。我已经解决了这个问题,但不幸的是我还不能回答我自己的问题。解决方案在 OP 的 cmets 中。由于跨域问题,需要 JSON-P
【解决方案2】:

我意识到的问题是,由于跨域问题,这不会起作用。让 AJAX 调用与跨域解决方案一起使用的解决方案是使用 JSONP。 http://www.json-p.org/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多