【问题标题】:How do i pass parameters from JQuery to ASP.NET webmethod?如何将参数从 JQuery 传递到 ASP.NET webmethod?
【发布时间】:2015-01-03 18:17:43
【问题描述】:

我在下面编写了这个调用 web 方法的 jQuery ajax 方法。除了作为用户对象的参数具有空字段外,调用发生得很好。我在调试时可以看到 firebug 中的值,但它们没有通过 webmethod 中的 User 对象参数

我试图将两个值从我的 jQuery 方法传递给 Web 方法,它们是“UserID”(Guid)和“About”(字符串),它们都是 User 类的属性,但在服务端, User 对象只是空的。请帮我找出我遗漏的任何东西。谢谢...见下面的代码。

JQuery

function updatePersonalProfile(userId) {
var user = {};
user.UserID = userId;
var updatedPersonalProfile = $(".txtPersonalProfile").html();
user.About = updatedPersonalProfile;
$.ajax({
    type: "POST",
    url: "PresentationService.asmx/updateUserPersonalProfile",
    dataType: "json",
    data: "{user:" + JSON.stringify(user) + "}",
    contentType: "application/json; charset=utf-8",
    success: function(response) {
    },
    error: function(response) {
        alert(response.d);
    }
});
}

网络方法

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void UpdateUserPersonalProfile(User user)
    {
        if (null == portfolioService)
        {
            portfolioService = new PortfolioService();
        }
        portfolioService.updateUserPersonalProfile(user);
    }

【问题讨论】:

  • @KarlAnderson 你介意帮我看看这个吗。谢谢你:)

标签: jquery asp.net ajax web-services webmethod


【解决方案1】:

我认为您在定义数据时缺少用户中的单引号。请使用如下代码更改数据行:

data: "{'user':" + JSON.stringify(user) + "}",

【讨论】:

  • 我已经在网络浏览器中调试了它,这些变量确实有正确的值,只是由于某种原因它没有通过 webmethod 参数......这可能是别的吗?因为我尝试改变数据线的写入方式
  • 请指定您使用的网络服务、浏览器和 Jquery 版本。此外,通常我不会在 WS 方法中指定 ResponseFormat 并在 Jquery AJAX 调用中指定成功。如果没有在 WS 方法中定义的 ScriptMethod 并且在 AJAX 调用中成功,您可以再试一次吗?
  • 还要注意url值区分大小写,因此你应该使用的值是'PresentationService.asmx/UpdateUserPersonalProfile'
【解决方案2】:

所以我发现我做错了什么,这两个字段在域对象中都有私有设置器。因此 jQuery 无法设置属性。

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多