0

我正在尝试发布到使用 jQuery 和 Ajax 的方法。我的 Ajax 代码如下:

 var isMale = $(e.currentTarget).index() == 0 ? true : false;

 $.ajax({
      type: "POST",
      url: "Default.aspx/SetUpSession",
      data: { isMale: isMale },
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function() {
         // Go to next question
      }
 });

这是我的 WebMethod:

[WebMethod]
public static void SetUpSession(bool isMale)
{
    // Do stuff
}

我在控制台看到 500(内部服务器错误),该方法永远不会被命中。在我将数据更改为"{}"并从方法签名中删除 bool 之后,该方法就会被命中,所以我假设它与我试图传递的 Ajax.data 属性有关。

4

3 回答 3

2

您需要修改两件事:-

1) 确保这行写在您的 Web 服务页面中并且应该取消注释

[System.Web.Script.Services.ScriptService]

2)将代码中的“数据”修改为:-

$.ajax({
      type: "POST",
      url: "Default.aspx/SetUpSession",
      data: '{ isMale:"' + isMale + '"}',
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function() {
         // Go to next question
      }
 });
于 2013-09-10T12:34:56.473 回答
-1

试试下面的代码:

var params = '{"isMale":"' + $(e.currentTarget).index() == 0 ? true : false + '"}';

    $.ajax({
        type: "POST",
        url: "Default.aspx/SetUpSession",
        data: params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        responseType: "json",
        success: function (data) {}
   });

[WebMethod]
public static void SetUpSession(string isMale)
{
    // Do stuff
}
于 2013-09-10T12:51:35.347 回答
-1

传递字符串而不是布尔值

[WebMethod]
public static void SetUpSession(string isMale)
{
// Do stuff
}

或者,您可以通过脚本管理器使用页面方法。

于 2013-09-10T10:33:45.820 回答