【问题标题】:Jquery AJAX Post: 500 (Internal Server Error)?Jquery AJAX 帖子:500(内部服务器错误)?
【发布时间】:2016-04-13 23:42:00
【问题描述】:

我正在尝试将字符串发布到网络服务,但出现此错误(Google Chrome 扩展项目):

jquery-2.1.1.min.js:4 POST http://localhost:49242/Service.asmx/test 500(内部服务器错误)

这是我的 ajax 代码:

var data = {};
data.param1 = words[0];

$.ajax({
    data: JSON.stringify({ 'data': data.param1 }),
    dataType: 'application/json',
    url: 'http://localhost:49242/Service.asmx/test',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (result) {
        alert(result);
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

我的服务:

[WebMethod]

[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public string test(string param1) {
    return param1;
}

我正在处理这个问题大约 3 天。你能帮助我吗 ?

顺便说一句,我有一个问题。我正在使用 ajax 将 json 变量发布到服务(如您所见),但服务返回 xml 值。有问题还是[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]这个代码块解决问题?

【问题讨论】:

  • 在数据类型中写入json
  • 谢谢,但没用。
  • 您是否检查过您的 url 正在处理您发布的数据?
  • 尽量不要对您的数据进行字符串化?数据:{ param1:'yourval'}
  • 对不起,你为什么要删除你最后的帖子?

标签: javascript jquery ajax web-services google-chrome-extension


【解决方案1】:

您的错误来自您的数据参数。字符串化 data 对象而不是 { 'data': data.param1 }

var data = {};
data.param1 = words[0];

$.ajax({
    data: JSON.stringify(data),
    dataType: 'application/json',
    url: 'http://localhost:49242/Service.asmx/test',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (result) {
        alert(result);
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

您的字符串化数据将生成{"param1":"Words"},那么您的服务应该能够绑定param1 参数。

【讨论】:

  • 非常感谢它的工作。但是我发布了服务“blah”字符串,但服务返回了 [object Object]。为什么?
  • Chrome 和我解决了问题。这有效: var data = response.hasOwnProperty("d") ? response.d :响应;警报(数据);
  • 很高兴听到这个消息 :)
【解决方案2】:

我在 AJAX 发布响应中遇到了这种类型的错误。我在这个问题上花了太多时间,最后我抓住了它。

它会引发 500 内部错误,因为 AJAX 响应包含来自服务器的大量内容,因此它会返回执行超时。

所以我只是在下面添加了一行,它工作正常。

Page.Server.ScriptTimeout = 300;

【讨论】:

  • 你在哪里添加了那行? @Belle有一个问题(attempted to edit your post as a reply
  • 我正在使用页面“emailapi.aspx”的 URL 调用 ajax 函数。在这种情况下,我收到了该错误,但是当我将 Page.Server.ScriptTimeout = 300; 添加到 emailapi.aspx 时。它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 2019-12-10
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
相关资源
最近更新 更多