当前位置:  开发笔记 > 编程语言 > 正文

JQuery Ajax Post导致500内部服务器错误

如何解决《JQueryAjaxPost导致500内部服务器错误》经验,为你挑选了8个好方法。

我正在尝试执行此AJAX帖子但由于某种原因我收到服务器500错误.我可以看到它在控制器中达到了断点.所以问题似乎在于回调.任何人?

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx?id=" + noteid,
    data: "{}",
    dataType: "json",

    success: function(data) {
        alert(data[1]);
    },
    error: function(data){
        alert("fail");
    }
});

这是应该返回的字符串:

{status:'200', text: 'Something'}

tvanfosson.. 65

我怀疑服务器方法在通过断点后抛出异常.使用Firefox/Firebug或IE8开发人员工具查看从服务器获得的实际响应.如果有异常,您将获得YSOD html,这可以帮助您找出要查找的位置.

还有一件事 - 您的数据属性应该是{}而不是"{}",前者是空对象,而后者是作为查询参数无效的字符串.更好的是,如果您没有传递任何数据,请将其删除.



1> tvanfosson..:

我怀疑服务器方法在通过断点后抛出异常.使用Firefox/Firebug或IE8开发人员工具查看从服务器获得的实际响应.如果有异常,您将获得YSOD html,这可以帮助您找出要查找的位置.

还有一件事 - 您的数据属性应该是{}而不是"{}",前者是空对象,而后者是作为查询参数无效的字符串.更好的是,如果您没有传递任何数据,请将其删除.


http://www.fiddler2.com/对于查看服务器的实际响应也非常有用.
您的第一句话具有误导性(暗示500错误发生在客户端)。在我更彻底地阅读答案之前,我几乎拒绝了您的投票。您可能需要澄清一下。

2> v1r00z..:

如果有人使用codeigniter框架,问题可能是由csrf保护配置启用引起的.


我刚刚在几分钟之前就遇到过这个问题...你的回答给了我提示:)也许有人为了避免这个问题而将其添加到数据中解决了这个问题:<?= $ this-> security-> get_csrf_token_name()? >:'<?= $ this-> security-> get_csrf_hash()?>'

3> Stian..:

我自己也遇到过这个问题,即使我在我的情况下找不到它的原因,当改变POSTGET,问题500错误消失了!

 type:'POST'


但不是真正的解决方案.有些事情必须是POST
那是完全错误的.如果将POST更改为GET实际上有效,那么您首先使用了错误的HTTPVerb.如果您必须使用POST,因为例如您正在发送有效负载,则必须使用POST并且使用GET将不起作用.而另一方面,如果你只是得到一些东西并且可以使用GET,不要使用POST,GET会被缓存(有时取决于配置)

4> BTE..:

这是通过Ajax请求获取数据的Ajax请求简单代码

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx",
    data: '{"id":"' + noteid+'"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
        alert(data.d);
    },
    error: function(data){
        alert("fail");
    }
});


contentType:“ application / json; charset = utf-8”,我删除了这一行,然后问题解决了

5> Tom..:

您可以在此处(或此处)查找HTTP状态代码,此错误告诉您:

"服务器遇到意外情况,无法满足请求."

您需要调试您的服务器.



6> Robotronic..:

我遇到了类似的复合错误,需要两个解决方案.在我的例子中,技术堆栈是MVC/ASP.NET/IIS/JQuery.服务器端失败并出现500错误,这是在控制器处理请求之前发生的,这使得服务器端的调试变得困难.

以下客户端调试使我能够确定服务器错误

在$ .ajax错误回调中,向控制台显示错误详细信息

  error: (error) => {
                     console.log(JSON.stringify(error));
   }

这至少使我能够查看初始服务器错误

"JSON请求太大而无法序列化"

这已在客户端web.config中解决


    

但是,请求仍然失败.但这一次有一个不同的错误,我现在能够在服务器端调试

"请求的实体太大"

通过将以下内容添加到服务web.config来解决此问题


    
      
        
          
        
      
    

配置值可能需要进一步调整,但至少它解决了ajax post导致的服务器错误.



7> Artur Kędzio..:

我今天碰到了同样的事情.如前所述,获取Firebug for Firefox,启用控制台并预览POST响应.这帮助我找出问题是多么愚蠢.我的行动是期望int类型的值,我发布了字符串.(ASP.NET MVC2)



8> Ramesh..:

应该在EventVwr中记录一个事件(来自asp.net的警告),它可以为您提供有关错误可能位置的更多详细信息.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有