传递一个参数从jQuery ajax调用到c#方法在web表单
本文关键字:调用 ajax 方法 表单 web jQuery 参数 一个 | 更新日期: 2023-09-27 18:09:04
我试图通过使用jQuery Ajax将我从标记中的数据属性拉到的值传递给c#方法。在本例中,QuestionNumber的值结果为1。EMHQQuestion是一个值为1到15的枚举。我希望我的c#方法deleteccondition接收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
}
在对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的使用。在发送到方法之前进行字符串化。您必须确保QuestionNumber参数化正确,并且web服务方法接收的JSON已经有效。
如果你发现它仍然不能工作,在你试图发送它之前,检查一下在QuestionNumber中存储了什么值。
上面的代码确实对我有用,任何其他问题请发表评论,我将尽我所能帮助回答。
使用jquery ajax字段的数据:
data: JSON.stringify({QuestionNumber: QuestionNumber}),
dataType: "json",