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

时间:2016-01-29 23:54:33

标签: javascript c# jquery ajax

我无法通过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";
}

有人能指出我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

您正在返回一个字符串,但成功方法是期待json。 这里的Ajax doc:http://api.jquery.com/jquery.ajax/

数据类型属性:

  

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

将数据类型更改为&#34; text&#34;

还要从#34; formData&#34;中选择你的参数。到&#34;数据&#34;

代码:

$.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调用中发送一个对象,但服务器端的参数是一个字符串。将其更改为具有与要发送的对象相同的名称属性的类实例