jquery ajax返回Internal server error 500错误怎么解决??

转载自:http://q.cnblogs.com/q/69745/

代码如下:

$.ajax({
        type: "POST",
        contentType: "application/json",
        url: "../WebServices/WebService.asmx/GetShopCart",
        data: "{}",
        dataType: 'html',
        success: function (result)
        {
            var ret = result.d;
            $('#dRightFixBaner_Detail_Body').html(ret[0]);
            $('#dRightFixBaner_Detail_Bottom_SumCount').find('em').html(ret[1]);
            $('#dRightFixBaner_Detail_Bottom_SumMoney').html("¥"+ret[2]);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
            alert('访问网络失败!' + errorThrown);
        }

问题描述:

只有在返回内容特别多的情况下才报500错误,并且在此情况下,手动访问webservices,能够刷出结果,如下:

因此,服务端是绝对没有问题的,也调试过了,没有发现任何问题。

再次强调,只有在服务端返回内容多的情况下才报错误,正常情况下没有任何错误的。

因为后台是.net,因此我特意关注了webconfig文件,设置了最大请求为4M(当然也尝试40M...)

也参考http://blogershub.com/Archive/2013/12/Internal-server-error-500-with-ajax-json-request-or-ajax-jq#.VNMOry7fp-U设置,仍然报错。求高手!

蓝色的猫儿的主页 蓝色的猫儿  |  菜鸟二级  | 园豆: 265
提问于:2015-02-05 15:01

问题补充:

服务端增加try catch,不报错,firefox调试是ok的,一般我都认为500错误就是服务端的错误,看来这次不会了,隐隐约约感觉是返回内容过大,jquery json 解析崩溃了。其实返回的内容也没多少,放到记事本里面,70kb的样子。

最佳答案
1

在web.config试试加上

    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="#####"/>
            </webServices>
        </scripting>
    </system.web.extensions>
收获园豆: 50
Yu  |  专家六级  |园豆:10464  | 2015-02-05 16:37

 

第一次我尝试加了,只是位置不是在这个地方,报错,没仔细想,现在看到你的回复,死马当活马医,又加了一次,不过这一次加在末尾,没报错,保存,成功!thank you!

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 16:42

@蓝色的猫儿: 刚刚仔细想了一下,500错误看来还是服务端的问题。返回的数据太大,webservices序列化为json格式时报错,但是这个错误在webservices又无法调试出来,得在webconfig里面配置,原来如此!

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 16:49

@蓝色的猫儿: 但是为什么浏览器访问的时候又是正常的呢?因为手动访问数据不json化,直接返回字符串,看webconfig配置的信息,应该是只有通过jquery ajax脚本访问webservices的时候,返回数据会json化。

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 16:53

@蓝色的猫儿: 可以试试这样显示

 

  <system.web>
    <compilation debug="true"  />
      <customErrors mode="Off"/>
  </system.web>
    <system.webServer>
        <httpErrors errorMode="Detailed"/>
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
Yu  | 园豆:10464  (专家六级)  | 2015-02-05 16:55
其他回答(3)
0

你调试下服务端的方法。然后在看看这个内容。http://forums.asp.net/t/1936660.aspx?get+500+Internal+Server+Error+in+pass+data+with+ajax+and+

坤坤  | 园豆:621  (小虾三级)  | 2015-02-05 15:11
0

你是post请求,你刷新浏览器能测试?使用Rest Client(Chrome 插件)测试下这个webService呢。

幻天芒  | 园豆:27115  (高人七级)  | 2015-02-05 15:33

下了一个rest client,测试结果说明该webservices正常,有返回结果的。

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 15:41

@蓝色的猫儿: ajax保存的情况下,这个webService也正常吗?那你把你的ajax的参数干掉一下嘛。比如contentType,data,dataType,全都干掉。

幻天芒  | 园豆:27115  (高人七级)  | 2015-02-05 15:45

@幻天芒: contentType去掉或者修改为application/html、application/text、text/html等等均报错

毕竟任何时候浏览器都返回200 OK的。问题应该不在webservices上面。

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 15:53

@蓝色的猫儿: 你指的报错,是进入ajax的error了吗?如果是的话,贴下具体的错误信息。

幻天芒  | 园豆:27115  (高人七级)  | 2015-02-05 16:43
0

“再次强调,只有在服务端返回内容多的情况下才报错误,正常情况下没有任何错误的。”,当服务端数据量返回较大的情况下,trace一下服务端已经走到了哪一步,记录一下请求和应答日志。服务端方法try catch的地方最好记录一下异常日志,也有可能是web服务发生了未捕获异常。最后重启iis再试试。

JeffWong  | 园豆:1763  (小虾三级)  | 2015-02-05 15:48

服务端返回数据量大的时候,调试服务器代码正常运行,并返回结果了,这与浏览器返回200 ok是对应的。另外,上传到服务器上也是如此报错,应该不是本电脑问题或者是iis的问题。

蓝色的猫儿  | 园豆:265  (菜鸟二级)  | 2015-02-05 15:55

@蓝色的猫儿: 看你的代码:  url: "../WebServices/WebService.asmx/GetShopCart",也就是说你把web服务放在了你的应用下面,根据相对地址去访问的,改成绝对地址实验一下是否可行。如果还是不行,看看该web应用下的web.config是否配置正确,web服务可能需要特殊配置。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值