将参数从 jQuery ajax 调用传递给 Web 表单中的 C# 方法
passing a parameter from jQuery ajax call to C# method in web forms
我正在尝试使用 jQuery Ajax 将我从标记中的数据属性中提取的值传递给 C# 方法。在此示例中,QuestionNumber 的值导致 1。EMHQQuestion 是一个枚举,其值从 1 到 15。我希望我的 C# 方法 DeleteCondition 接收到该 1,但我却收到 500 内部服务器错误:“无效的 Web 服务调用,丢失参数值:'questionNumber'.
有什么建议吗?
function DeleteConditions() {
var QuestionNumber = $('.noRadioButton').data('questionnumber');
$.ajax({
url: "mhqpreinterview.aspx/deletecondition",
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
questionNumber: QuestionNumber
});
Dialog.dialog('close');
}
..
[WebMethod(EnableSession = true)]
public static void DeleteCondition(EMHQQuestion questionNumber)
{
//stuff
}
使用数据jquery ajax field:
data: JSON.stringify({QuestionNumber: QuestionNumber}),
dataType: "json",
我在向 Web 表单方法提出 AJAX 请求时遇到了同样的问题。
对于您的 C# 方法:
[System.Web.Services.WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string DeleteCondition(EMHQQuestion questionNumber)
{
// do enum stuff here
}
请注意,我已将方法类型从 void 更改为 string。将一些可识别信息发送回客户端是个好主意。即使您不必发回数据,它也让您有机会自定义成功或有用的调试信息。
以下是您必须对 AJAX 对象进行的更改:
var params = '{ questionNumber: ' + JSON.stringify(QuestionNumber) + '}';
var post = {
type: 'POST',
url: 'mhqpreinterview.aspx/deletecondition',
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json"
};
$.ajax(post);
你应该从上面的 javascript 中拿走的是在发送到你的方法之前使用 JSON.stringify。您必须确保 QuestionNumber 参数化正确并且已经有效 JSON 以便 Web 服务方法接收。
如果您发现它仍然无法正常工作,请在尝试发送之前检查 QuestionNumber 中存储的值。
上面的代码对我来说确实有效,有其他问题post评论,我会尽力帮助解答。
我正在尝试使用 jQuery Ajax 将我从标记中的数据属性中提取的值传递给 C# 方法。在此示例中,QuestionNumber 的值导致 1。EMHQQuestion 是一个枚举,其值从 1 到 15。我希望我的 C# 方法 DeleteCondition 接收到该 1,但我却收到 500 内部服务器错误:“无效的 Web 服务调用,丢失参数值:'questionNumber'.
有什么建议吗?
function DeleteConditions() {
var QuestionNumber = $('.noRadioButton').data('questionnumber');
$.ajax({
url: "mhqpreinterview.aspx/deletecondition",
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
questionNumber: QuestionNumber
});
Dialog.dialog('close');
}
..
[WebMethod(EnableSession = true)]
public static void DeleteCondition(EMHQQuestion questionNumber)
{
//stuff
}
使用数据jquery ajax field:
data: JSON.stringify({QuestionNumber: QuestionNumber}),
dataType: "json",
我在向 Web 表单方法提出 AJAX 请求时遇到了同样的问题。
对于您的 C# 方法:
[System.Web.Services.WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string DeleteCondition(EMHQQuestion questionNumber)
{
// do enum stuff here
}
请注意,我已将方法类型从 void 更改为 string。将一些可识别信息发送回客户端是个好主意。即使您不必发回数据,它也让您有机会自定义成功或有用的调试信息。
以下是您必须对 AJAX 对象进行的更改:
var params = '{ questionNumber: ' + JSON.stringify(QuestionNumber) + '}';
var post = {
type: 'POST',
url: 'mhqpreinterview.aspx/deletecondition',
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json"
};
$.ajax(post);
你应该从上面的 javascript 中拿走的是在发送到你的方法之前使用 JSON.stringify。您必须确保 QuestionNumber 参数化正确并且已经有效 JSON 以便 Web 服务方法接收。
如果您发现它仍然无法正常工作,请在尝试发送之前检查 QuestionNumber 中存储的值。
上面的代码对我来说确实有效,有其他问题post评论,我会尽力帮助解答。