传递一个参数从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
}

传递一个参数从jQuery ajax调用到c#方法在web表单

在对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",