получить данные с помощью JSON в шаблоне Umbraco - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть следующий код для передачи параметра в веб-метод и получения результата в 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
}

Метод не выполняется, я использую красивые URL. Помогите пожалуйста, что не так с кодом? Спасибо.

1 Ответ

0 голосов
/ 08 ноября 2011

Я бы сначала начал с броска alert в вашу функцию щелчка, просто чтобы убедиться, что она действительно нажата.Предполагая, что это ...

Проверьте документацию для / 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",

Надеюсь, это поможет вам.Удачи!

...