在umbraco模板中使用json获取数据

时间:2011-11-03 20:37:10

标签: jquery umbraco webmethod

我有以下代码,用于将参数传递给Web方法,并在jquery ajax中检索结果:

<script type="text/javascript">
    $(document).ready(function () {
        $('#<%=btnSignup.ClientID %>').click(function () {


            var dataString = JSON.stringify({
                firstName: $("#SignupFirstName").val(),
                lastName: $("#SignupLastName").val(),
                email: $("#SignupEmail").val(),
                password: $("#SignupPassword").val()
            });

            $.ajax({
                type: "POST",
                url: "Signup.aspx/Signup",
                data: dataString,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                beforeSend: function () {
                    // some code
                },
                success: function (result) {
                    $('#loading').hide();

                    if (result.hasOwnProperty("d")) { result = result.d; }//and some more code
                }
            });
            return false;
        });
    });
</script>

和网络方法:

[WebMethod]
public static SignupOutput Signup(string firstName, string lastName, string email, string password)
{
    // execute some code and return an object for the json
}

该方法未执行,我正在使用不错的网址。请帮忙,代码有什么问题? 感谢。

1 个答案:

答案 0 :(得分:0)

我首先会在你的点击功能中抛出一个alert,以确保它实际被击中。假设它是......

查看the documentation / Base。一定不要错过该页面右侧的链接,它们有点模糊。

基本上,我认为你需要做的是......

将WebMethod移动到独立类中,然后删除[WebMethod]属性。我过去也一直在努力回归对象,而我转移到的只是构建一个json格式的字符串并返回它。所以你最终得到的是这样的:


public class UmbracoWebMethods
{
    public static SignupOutput Signup(string firstName, string lastName, string email, string password) // you may need to change this to public static string
    {
        // execute some code and return an object for the json
    }
}

将配置添加到/presentation/config/restExtensions.config


<?xml version="1.0" encoding="utf-8"?>
<RestExtensions>  
  <ext assembly="YourAssembly" type="YourAssembly.UmbracoWebMethods" alias="UmbWebMethods">
    <permission method="Signup" allowAll="true" returnXml="false" />
  </ext>
</RestExtensions>

显然,您需要稍微调整一下以匹配您的确切程序集名称/命名空间。

更改ajax电话。


$.get("/Base/UmbWebMethods/Signup/" + $("#SignupFirstName").val()+ "/" + $("#SignupLastName").val()+ "/" + $("#SignupEmail").val() + "/" + $("#SignupPassword").val() + ".aspx",

希望这会对你有所帮助。祝你好运!