Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с вызовом WebService через ajax / 23 сообщений из 23, страница 1 из 1
18.05.2013, 02:23
    #38262992
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
Уважаемые, выручайте... Заманался с проблемой одной.
Есть aspx страница.
в ней вызов сервиса :
(сам сервис пашет. проверял - в браузере открывается по ссылке http://localhost:4680/testWS.asmx и метод возвращает xml)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        function getBestEmployee() {
            $.ajax({
                type: "POST",
                url: 'http://localhost:4680/testWS.asmx/GetBestEmployee',
                contentType: "application/xml; charset=utf-8",
                dataType: "xml",
                success: function (response) {
                    $('#<%=txtFirstName.ClientID %>').val(response.d.pFName);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert('err:' + errorThrown + '  |  ' + 'XMLHttpRequest:' + XMLHttpRequest);
                }
            });



У меня несколько вопросов:
1 - Правильно ли указан URL? формат всмысле. Облазил кучу примеров но везде натыкался на локальные сервисы... ну тоесть без указания HTTP.
2 - почему в таком виде алерт с ошибкой (я успеваю увидеть что там ошибка) быстро исчезает? (Post_back Чтоли?)
3 - Если я оставляю без HTTP url: 'localhost:4680/testWS.asmx/GetBestEmployee' - плюёт такою ошибку в алерте nsresult: "0x805e0006 (<unknown>) при этом алерт уже не исчезает.

про это читал - там говорят что то толи с портами, толи с файрвалом... но я уже пробовал отключать его и один фик...

json пока не предлагать. хочу разобраться с этим, а там дальше уже видно будет
...
Рейтинг: 0 / 0
18.05.2013, 02:30
    #38262994
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
входящих параметров у метода нет.
и кстати заодно вопрос 4 - response.d - смогу ли я получить доступ к xml своему? и подскажите как его распарсить. Вот такого типа ответ:

<Employee><pId>16</pId><pFName>ваыавы</pFName><pLName>выва</pLName><pDateofBirth>2000-09-02T00:00:00</pDateofBirth><pPhone>43434344334</pPhone><pSalary>345356.4</pSalary></Employee>
...
Рейтинг: 0 / 0
18.05.2013, 08:01
    #38263046
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
> json пока не предлагать. хочу разобраться с этим, а там дальше уже видно будет
улыбнуло...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.05.2013, 09:08
    #38263055
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
J_Mnemonic json пока не предлагать. хочу разобраться с этим, а там дальше уже видно будет

J_Mnemonic смогу ли я получить доступ к xml своему? и подскажите как его распарсить.

и после этого ты не понимаешь что ты делаешь херню?

J_Mnemonic почему в таком виде алерт с ошибкой (я успеваю увидеть что там ошибка) быстро исчезает? (Post_back Чтоли?)

куда ты повесил свою функцию, покажи

J_Mnemonic Правильно ли указан URL?

да, но если ты прям прописал в js абсолютный путь ... читать книжки

п.с. плохо искал
...
Рейтинг: 0 / 0
18.05.2013, 10:33
    #38263075
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
handmadeFromRuJ_Mnemonic Правильно ли указан URL? да , но если ты прям прописал в js абсолютный путь ... читать книжки

п.с. плохо искалВообще-то нет. Имя метода должно передаваться в теле HTTP-запроса, в теле SOAP-конверта.
...
Рейтинг: 0 / 0
18.05.2013, 10:45
    #38263085
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
J_Mnemonic, по идее Ваш код должен выглядеть так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    function getBestEmployee() {
        $.ajax({
            contentType: "text/xml; charset=utf-8",
            data: '<?xml version="1.0" encoding="utf-8"?>' +
                  '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
                  '<soap:Body>' +
                  '<GetBestEmployee xmlns="http://tempuri.org/"></GetBestEmployee>' +
                  '</soap:Body>' +
                  '</soap:Envelope>',
            dataType: "xml",
            type: "POST",
            url: 'http://localhost:4680/testWS.asmx',
            success: function (response) {
                $('#<%=txtFirstName.ClientID %>').val(response.d.pFName);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('err:' + errorThrown + '  |  ' + 'XMLHttpRequest:' + XMLHttpRequest);
            }
        });
    }


Что у Вас отображается в браузере по ссылке http://localhost:4680/testWS.asmx?op=GetBestEmployee ?

Плюс поставьте фидлер и посмотрите уходит-ли запрос и какой ответ (код ответа). Возможно браузер не может выполнить кроссдоменный запрос.

Сервис запущен на Web Developer Server-е студии (порт 4680 вызывает такое подозрение)?
...
Рейтинг: 0 / 0
18.05.2013, 10:47
    #38263087
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
J_Mnemonicjson пока не предлагать. хочу разобраться с этим , а там дальше уже видно будетВаше право. Вот Вам ссылка: SOAP . Фпирёд!
...
Рейтинг: 0 / 0
18.05.2013, 10:55
    #38263095
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
J_Mnemonicвходящих параметров у метода нет.
и кстати заодно вопрос 4 - response.d - смогу ли я получить доступ к xml своему? и подскажите как его распарсить. Вот такого типа ответ:

<Employee><pId>16</pId><pFName>ваыавы</pFName><pLName>выва</pLName><pDateofBirth>2000-09-02T00:00:00</pDateofBirth><pPhone>43434344334</pPhone><pSalary>345356.4</pSalary></Employee>
Ну для этого надо переделать:
Код: javascript
1.
2.
3.
success: function (response) {
    $('#<%=txtFirstName.ClientID %>').val(response.d.pFName);
}

как то так:
Код: javascript
1.
2.
3.
4.
5.
success: function (data, status, request) {
    var xml = $.parseXML(request.responseText);

    $('Employee', xml).each(function() { /* Тут что-то делаем с полученными данными о сотрудниках */ };
}


Вместо each можете использовать другой метод jQuery.
...
Рейтинг: 0 / 0
18.05.2013, 11:51
    #38263129
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
handmadeFromRuда, но если ты прям прописал в js абсолютный путь ... читать книжки


читать книжки это конечно дельный совет... Из разряда тостов - за здоровье! Но когда время резко поджимает он не очень помогает.
Но спасибо за попытку ;)

Ex_Soft> json пока не предлагать. хочу разобраться с этим, а там дальше уже видно будет
улыбнуло...


ну хоть что то хорошее от моего вопроса :) Я слышел что json очень модный сейчас. Но мне нужно разобраться для начала с тем что у меня есть, иначе я буду плохо спать :)

А теперь по теме:
вызов функции повесил на кнопку:
onClientClick="btnRefresh_Click()"

skyANA Что у Вас отображается в браузере по ссылке http://localhost:4680/testWS.asmx?op=GetBestEmployee ?

Приложил "testWS Web Service.htm"

skyANA Возможно браузер не может выполнить кроссдоменный запрос.

Как этого избежать? Я действительно всё это просматриваю в VS2010.
И ещё не совсем я понял, зачем Вы мне советуете этот параметр добавлять в вызов
Код: javascript
1.
2.
3.
4.
5.
6.
 data: '<?xml version="1.0" encoding="utf-8"?>' +
                  '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
                  '<soap:Body>' +
                  '<GetBestEmployee xmlns="http://tempuri.org/"></GetBestEmployee>' +
                  '</soap:Body>' +
                  '</soap:Envelope>',


Если входящих параметров нету? Я думал в data только входящие параметры можно передавать.
и почему нельзя указать вызов метода в самом URL (как я видел это во многих примерах)
'http://localhost:4680/testWS.asmx',

Понимаю что вопросы ламерские, но чес слово, прежде чем написать сюда, перерыл кучу сайтов, везде либо Json либо путь указан не http. Сюда написал уже в 4 ночи...
...
Рейтинг: 0 / 0
18.05.2013, 11:59
    #38263137
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
Да, ещё, для инфы. Когда отображаю страницу через Internet Explorer,
alert('err:' + errorThrown) - это выдаёт No Transport
...
Рейтинг: 0 / 0
18.05.2013, 12:55
    #38263174
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
skyANA Вообще-то нет. Имя метода должно передаваться в теле HTTP-запроса, в теле SOAP-конверта.


Хм... Я видел кучу примеров, где метод передаётся прямо в URL...
Вот например где то тут на форуме видел такую ссылку.
http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery
действительно, очень хороший пример, подробный и понятный, и я вроде делаю всё по той же аналогии, кроме того что у меня не json и URL содержит "http:\\localhost\"
тем не менее что то аказца не так я делаю...
...
Рейтинг: 0 / 0
18.05.2013, 16:42
    #38263349
Проблема с вызовом WebService через ajax
J_Mnemonic,

Держи
HTML page
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <title></title>
</head>
<body>
    Ризалт: <span id="result"></span>
    

    <input type="button" id="btn1" value="Test" />
    <script>

        $('#btn1').click(function(e)
        {
            e.preventDefault();
            $.ajax({
                contentType: /*text/xml*/"application/json; charset=utf-8",
                dataType: /*xml*/"json",
                type: "POST",
                url: 'http://localhost:7200/webservice1.asmx/FuckAll',
                success: function(response)
                {
                    $('#result').html(response.d);
                },
                error: function()
                {
                    alert('err:' );
                }
            });
        });
    </script>
</body>
</html>


service
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebApplication1
{
    /// <summary>
    /// Сводное описание для WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Чтобы разрешить вызывать веб-службу из скрипта с помощью ASP.NET AJAX, раскомментируйте следующую строку. 
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string FuckAll()
        {
            return "Пошли все на...!";
        }
    }
}

На веб странице эксемель нахрен не нужен - так шо json в зубы. Потом спасибо скажешь.
ПС: в твоем примере response.d.pFName именно для ответа сервиса в json - только в этом случае ризалт пакуется в объект d.
...
Рейтинг: 0 / 0
18.05.2013, 16:48
    #38263357
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
пробегалло,

Большое тебе спасибо! Да, я пока искал решение своей проблемы тоже заметил что почти во всех примерах используют его - Json.
Скорее всего я и вольюсь в этот дружный поток людей :) Но проблема у меня была в другом и я её буквально токо что выгуглил (давно мой мозг не взрывался так) - Кросс-доменность (про которую мне тут сказали, но не объяснили что это).
помогло вообщем это: jQuery.support.cors = true;
...
Рейтинг: 0 / 0
18.05.2013, 16:56
    #38263361
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
Кстати, а поясни пожалуйста. Так для понимания - если в моём случае, метод веб сервиса возвращает экземпляр класса какого то... со своими методами, свойствами и ещё чем либо. Как вернёт его Json? Или такие сложные типы впринципе нельзя получать из веб сервиса?
...
Рейтинг: 0 / 0
18.05.2013, 19:02
    #38263474
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
странно, работает. но только в IE. в FF вызов падает в ошибку...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        function getBestEmployee() {
            $.ajax({
                type: "GET",
                crossDomain: true,
                cache: false,
                url: 'http://localhost:4680/testWS.asmx/GetBestEmployee',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (response) {
                    $('#<%=txtFirstName.ClientID%>').val(response.d.pFName.toString());
                    alert();
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert('err:' + errorThrown + '  |  ' + 'XMLHttpRequest:' + XMLHttpRequest);
                }
            });
        }
...
Рейтинг: 0 / 0
18.05.2013, 22:28
    #38263595
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
skyANAhandmadeFromRuпропущено...
да , но если ты прям прописал в js абсолютный путь ... читать книжки

п.с. плохо искалВообще-то нет. Имя метода должно передаваться в теле HTTP-запроса, в теле SOAP-конверта.
вообще то да. asmx сервису можно указать имя метода в адресе.
вообще то у GetBestEmployee есть входные параметры pPhone pSalary (как я понял) - вот их и нужно указывать в параметре data в $.ajax. Надо указать json объект но тебе его не предлагать - :).
далее у приложения на http://localhost:4680 в конфиге указано, что веб сервисы можно по Post вызывать?
по умолчанию это между прочим выключено.
...
Рейтинг: 0 / 0
18.05.2013, 22:31
    #38263599
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
monstrU,
Спасибо, я уже решил эти проблемы, теперь у меня другие :) посмотрите пожалуйста мой последний пост
и кстати а как именно выглядит запрет POST?
...
Рейтинг: 0 / 0
19.05.2013, 09:18
    #38263710
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
monstrUskyANAпропущено...
Вообще-то нет. Имя метода должно передаваться в теле HTTP-запроса, в теле SOAP-конверта.
вообще то да. asmx сервису можно указать имя метода в адресе.
Ага, я лажанулся. Если метод не принимает параметры, или они простые, то можно.
...
Рейтинг: 0 / 0
19.05.2013, 09:20
    #38263711
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
J_Mnemonicи кстати а как именно выглядит запрет POST? HOW TO: Limit the Web Services Protocols that a Server Permits
...
Рейтинг: 0 / 0
20.05.2013, 14:38
    #38264578
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
Всё ещё ковыряюсь с проблемой вызова в FF и Opera...

Консоль отладки показывает "500 Internal Server Error"
В VS в окне output сделал "выводить только ошибки" - ничего. пусто...

Подскажите пожалуйста, что ещё и где проверить можно? (если возможно подробно)
...
Рейтинг: 0 / 0
20.05.2013, 14:48
    #38264598
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
...
Рейтинг: 0 / 0
20.05.2013, 15:10
    #38264637
Проблема с вызовом WebService через ajax
J_Mnemonic,

Чего проще:
client err
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <title></title>
</head>
<body>
    Ризалт: <span id="result"></span>
    

    <input type="button" id="btn1" value="Test" />
    <script>
        $('#btn1').click(function(e)
        {
            e.preventDefault();
            $.ajax({
                contentType: /*text/xml*/"application/json; charset=utf-8",
                dataType: /*xml*/"json",
                type: "POST",
                url: 'http://localhost:7200/webservice1.asmx/FuckAll2',
                success: function(response)
                {
                    $('#result').html(response.d);
                },
                error: function(err)
                {
                    w = window.open('', '', 'width=400,height=200');
                    w.document.write(err.responseText);
                    w.focus();
                }
            });
        });
    </script>
</body>
</html>

...
Рейтинг: 0 / 0
20.05.2013, 15:31
    #38264672
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с вызовом WebService через ajax
пробегалло,
сделал в точности как ты сказал - открылось пустое окно... странно всё это...
responseText - однозначно пустой... может быть до вызова как то и не доходит?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        
function getBestEmployee() {
            $.ajax({
                type: 'POST',
                crossDomain: true,
                cache: false,
                url: 'http://localhost:4680/testWS.asmx/GetBestEmployee',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: showBestEmployee,
                error: function (err) {
                    w = window.open('', '', 'width=400,height=200');
                    w.document.write(err.responseText);
                    w.focus();
                }
            });
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с вызовом WebService через ajax / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]