C# 如何使用jQueryAjax调用从web方法发送和检索数据?
我有一个文本框和它旁边的一个按钮。我想通过jqueryajax调用将textbox的内容发送到webmethod,并返回其大写值,并在alert中显示。到目前为止,我有这个代码,但它不工作 JAVASCRIPT:C# 如何使用jQueryAjax调用从web方法发送和检索数据?,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我有一个文本框和它旁边的一个按钮。我想通过jqueryajax调用将textbox的内容发送到webmethod,并返回其大写值,并在alert中显示。到目前为止,我有这个代码,但它不工作 JAVASCRIPT: function CallWM() { var name = $('#name').val(); RealCallWM(name); } function RealCallWM(na
function CallWM()
{
var name = $('#name').val();
RealCallWM(name);
}
function RealCallWM(name) {
$.ajax({
url: 'Register.aspx/UpperWM',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { name: JSON.stringify(name) },
success: OnSuccess(response),
error: function (response) {
alert(response.responseText);
}
})
};
HTML:
替换:
data: '{name: ' + name + '}',
与:
以确保正确编码。现在您正在发送以下有效负载:
{name:'some value'}
这显然是一个无效的JSON负载。在JSON中,所有内容都应双引号:
{"name":"some value"}
这就是为什么您绝对不应该使用一些字符串连接手动构建JSON,而应该使用内置的方法(JSON.stringify
)
旁注:我不确定$.ajax
方法是否理解名为failure
的回调。因此:
$.ajax({
url: 'Register.aspx/UpperWM',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { name: JSON.stringify(name) },
success: OnSuccess(response),
error: function (response) {
alert(response.responseText);
}
});
还请注意,在您的错误回调中,我删除了
response.d
属性,就好像您的web方法中存在异常一样。很可能服务器根本不会返回任何JSON。根据您的评论,我理解您的问题尚未解决,所以请尝试一下
function RealCallWM(name) {
$.ajax({
type: "POST",
url: "Default.aspx/UpperWM",
data: JSON.stringify({ name: $('#name').val() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data, status) {
console.log("CallWM");
alert(data.d);
},
failure: function (data) {
alert(data.d);
},
error: function (data) {
alert(data.d);
}
});
}
您收到的控制台错误消息是什么?未捕获引用错误:响应未定义OK,如Darin所述,使用JSON.stringify(name)@Delphian我按照Darin的建议进行了更改,但我收到了控制台错误“未捕获引用错误:响应未定义”函数“CallWM”中“msg”的用法是什么,您在调用时没有传递值只是为了进一步的启发,请参见Darin是正确的,
jQuery.ajax()
方法没有失败
回调。很抱歉响应太晚,我做了更改,但我收到了控制台错误“ncaught ReferenceError:CallWM未定义”这段javascript代码是在哪里编写的?它是否在单独的javascript文件中?您是否在Web表单中引用了此文件?您还必须在按钮之前引用它。另外,因为您使用的是jQuery,所以不要忘记在自定义javascript代码之前引用它。它位于head标记内的同一个文件中。相同错误未捕获引用错误:未定义响应,我想我们是在错误的位置查找问题。我知道这一定很愚蠢,我正试图找出是什么导致了这个错误。
{"name":"some value"}
$.ajax({
url: 'Register.aspx/UpperWM',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { name: JSON.stringify(name) },
success: OnSuccess(response),
error: function (response) {
alert(response.responseText);
}
});
function RealCallWM(name) {
$.ajax({
type: "POST",
url: "Default.aspx/UpperWM",
data: JSON.stringify({ name: $('#name').val() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data, status) {
console.log("CallWM");
alert(data.d);
},
failure: function (data) {
alert(data.d);
},
error: function (data) {
alert(data.d);
}
});
}