Сделать jQuery Ajax Call на главной странице? - PullRequest
3 голосов
/ 09 сентября 2010

Я что-то упустил?Я пытаюсь сделать простой вызов ajax, используя jquery для веб-службы на моем сайте, и каждый раз, когда я звоню с главной страницы, я получаю ошибку 500.Неужели никто никогда не делал ajax-вызов с главной страницы или я просто сумасшедший и крайне лишен сна? * Пример:

MasterPage.master

<script type="text/javascript">
    $(document).ready(function () {
        $.ajaxSetup({ dataType: "json", contentType: "application/json; charset=utf-8" });

        $.ajax({
            url: '<%= ResolveUrl("~/Services/Test.asmx/HelloWorld") %>',
            success: function (data) {
                alert(data);
            },
            error: function (xhr, err) {
                alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
                alert("responseText: " + xhr.responseText);
            }
        });

    });
</script>

/Services / Test.asmx

<WebMethod()> _
Public Function HelloWorld() As String
   Return "Hello World"
End Function

Видите что-нибудь не так?Есть ли у меня неправильное понимание мастер-страницы?Пожалуйста, помогите!

1 Ответ

4 голосов
/ 09 сентября 2010

Хорошо, я думаю, что понял проблему.Теперь я начинаю думать, что я просто сонный.Несколько проблем, которые у меня были, и я перечислю их для всех остальных, чтобы они не делали в будущем:

1) Я помню, как читал другой пост ранее, в котором объяснялось, что ajaxвызов через библиотеку jQuery не похож на нулевой объект для данных, поэтому что-то должно быть в списке, даже если это пустой массив.Итак, это именно то, что я добавил:

$.ajax({
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            type: 'POST',
            data: [],
            url: '<%= ResolveUrl("~/Test.asmx/HelloWorld") %>',
            success: function (data) {
                alert(data);
            },
            error: function (xhr, err) {
                //alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
                //alert("responseText: " + xhr.responseText);
                $('#ajaxResponse').html(xhr.responseText);
            }
        });

2) Как только я справился с проблемой jjuery ajax, мне было представлено сообщение об ошибке от самого веб-сервиса.Предупредил меня, что, чтобы иметь возможность вызывать веб-сервис из сценария, я должен добавить следующую строку:

<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Test
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "[{""Hello World""}]"
    End Function

End Class

Это решило проблему, и теперь я могу вызывать ее везде, где она находится.Спасибо за сообщения, но похоже я просто смотрю на вещи как обычно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...