我无法通过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";
}
有人能指出我哪里出错了吗?
答案 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调用中发送一个对象,但服务器端的参数是一个字符串。将其更改为具有与要发送的对象相同的名称属性的类实例