繁体   English   中英

从C#WebMethod返回到JavaScript AJAX调用的内部服务器错误

[英]Internal Server Error returning from C# WebMethod to JavaScript AJAX call

我无法获得AJAX调用来从C#WebMethod获得收益。 它总是返回AJAX错误“内部服务器错误”。

一个按钮调用JS函数:

<button id="btn" onclick="Create();">foo</button>

JS函数:

function Create() {
var data = {
    value1: 'string 1',
    value2: 'string 2',
    value3: 'string 3'
};
$.ajax({
    url: 'default.aspx/Create',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ formData: data }),
    async: true,
    success: function (msg, status) {
        alert("success " + msg.d);
    },
    failure: function (data) {
        alert("failure " + msg.d);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus + " : " + errorThrown);
    }
  });
return false;
}

和C#WebMethod:

[WebMethod]
public static string Create(string data)
{
    return "webmethod string";
}

谁能指出我的错在哪里?

您正在返回一个字符串,但是成功方法需要json。 此处的Ajax文档: http : //api.jquery.com/jquery.ajax/

数据类型属性:

dataType(默认值:Intelligent Guess(xml,json,脚本或html))类型:String期望从服务器返回的数据类型。 如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4中,脚本将执行该脚本,而其他所有内容将是以字符串形式返回)。 可用的类型(并将结果作为第一个参数传递给您的成功回调)

将数据类型更改为“文本”

还将参数从“ formData”更改为“ data”

码:

$.ajax({
    url: 'default.aspx/Create',
    type: 'POST',
    dataType: 'text',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ data: data }),
    success: function (data) {
        alert("success " + data);
    },
    failure: function (data) {
        alert("failure " + msg.d);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus + " : " + errorThrown);
    }
  });

3:d在此处编辑:您正在ajax调用中发送对象,但是服务器端的参数是字符串。 将其更改为具有与要发送的对象相同名称属性的类实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM