Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите запустить веб-сервис из JS / 18 сообщений из 18, страница 1 из 1
05.02.2016, 17:11
    #39164274
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Есть веб-сервис (WCF) по адресу http://localhost/WcfHelloCurTime_deploy/HelloCurTime.svc
У него есть функция getdata(name as string) - в итоге сервис возвращает имя переданное в переменной name + текущее время (тестировал, проверял, сервис работает как надо)

Теперь моя задача вызвать этот веб-сервис из HTML-страницы используя JS.
Пытаюсь делать так (подсмотрел на CodeProject):

Код: javascript
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.
<html>
<head>
<title>Hello WCF</title>

<script language="JavaScript">
var iCallID;

function InitializeService()
{
	service.useService(http://localhost/WcfHelloCurTime_deploy/HelloCurTime.svc,"HelloWorldService");
}

function GetAge()
{
	service.HelloWorldService.callService("HelloCurTime_Service","Sanya");
}



function ShowResult()
{
	alert(event.result.value);
}

</script>
</head>


<body onload="InitializeService()" id="service" style="behavior:url(webservice.htc)" onresult="ShowResult()">
	<button onclick="GetAge()">Get Age</button>
</body>
</html>



Но ничего не происходит. Файл webservice.htc я скачал с Microsoft сайта и он лежит в папке с моей HTML страницей.
Подскажите куда копать плиз...
...
Рейтинг: 0 / 0
05.02.2016, 18:04
    #39164348
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
ну например, это работает только в ie: style="behavior:url(webservice.htc)"
и то вроде с 10й версии и ниже.

если проблема не в браузере, то придется переписать htc в обычный js, чтобы все работало в хроме, и посмотреть на состояние страницы в консоли отладки.
...
Рейтинг: 0 / 0
05.02.2016, 18:33
    #39164384
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Пробую немного иначе:

Код: javascript
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.
<html>
<head>
<title>Hello</title>

    	<script src="http://code.jquery.com/jquery-1.3.2.js" type="text/javascript"></script>
    	<script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>

	<script type="text/javascript">
        function cityClickJQuery()
        {
	$.get(
  	  "http://servername/WcfHelloCurTime_deploy/HelloCurTime.svc/GetData",
   		 { name : "google" },
   	 function(data) {
     	   alert(data);
    	}
	);}
	</script>


</head>
<body>

        <input type="button" value="jQuery call" onclick="cityClickJQuery();" />

</body>
</html>



И вот что получаю:
...
Рейтинг: 0 / 0
05.02.2016, 18:34
    #39164385
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
На стороне самого WCF сервиса я ничего не настраивал, просто опубликовал и всё.
Возможно что то прописывать нужно, но я пока в этой теме профан, просто для себя делаю, только начинаю изучать.
...
Рейтинг: 0 / 0
05.02.2016, 23:00
    #39164575
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
http://www.sql.ru/forum/1198990/gde-prodavat-svoe-prilozhenie

Забавно :)

По теме: про cors забыл.
...
Рейтинг: 0 / 0
05.02.2016, 23:49
    #39164585
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Santa89И вот что получаю:html-файл находится на диске це, а запрос отправляется на веб-сервер, получается запрещенный кроссдоменный запрос.
нужно либо разместить html-файл на http://servername/ и открывать его оттуда, либо разрешить кроссдоменные запросы на сервисе.
...
Рейтинг: 0 / 0
06.02.2016, 01:25
    #39164635
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
skyANA,

это совсем другое приложение)
...
Рейтинг: 0 / 0
06.02.2016, 01:46
    #39164643
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Santa89skyANA,

это совсем другое приложение)тогда странно :)

Windows 7 Gadget-ы - это тот же HTML + CSS + JS.. И его Вам удалось подружить с WCF..
А тут вдруг проблемы с CORS..
...
Рейтинг: 0 / 0
06.02.2016, 02:00
    #39164645
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Ну то приложение впринципе готово, а спрашивал в той ветке я - таксказать заранее) И его простота в том, что всё крутится на одной машине, т.е. Asp.net страница спокойно вызывает веб севрис, мне осталось это всё дело только в гаджет завернуть, хотя вангую будет не просто это))

В данном посте же, ситуация обратная. Есть голый HTML созданный в блокноте, и работающий веб-сервис, но веб-сервис работает на удаленной машине, проблемы я так понял именно в этом.. Про cors я вобще впервые слышу. Есть ссылка почитать? И если можно, хелп по сабжу)
...
Рейтинг: 0 / 0
06.02.2016, 02:07
    #39164649
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Santa89, в Яндексе наберите CORS..

P.S.: а ASP.NET страницу завернуть в гаджет - это что-то новенькое.
...
Рейтинг: 0 / 0
08.02.2016, 17:08
    #39165764
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
skyANA,

спасибо, почти получилось, но затык теперь на таком моменте:
(веб сервис принимает имя пользователя и возвращает Hello, имя + текущее время, код такой:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            jQuery.ajax({
                type: 'GET',
                url: 'http://msk-dwh-02/WcfHelloCurTime_deploy/HelloCurTime.svc/GetData',
                data: { name :'TestUser' },
                success: function (data)
                {
                    alert('Success');
                },

                dataType: 'jsonp',
                error: function ()
                {
                    alert('Failed');
                }
            });



Ошибка на скриншоте...Как мне подправить результат вывода?
...
Рейтинг: 0 / 0
08.02.2016, 19:26
    #39165930
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Есть какие нибудь подсказки хотябы? Ведь JS вроде как вернул мне то что нужно с сервиса, только вот распарсить видимо не может..
...
Рейтинг: 0 / 0
09.02.2016, 22:00
    #39167139
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Santa89Ведь JS вроде как вернул мне то что нужно с сервиса
Нет, не то. У вас же написано jsonp, а это обычный json.

Нужно сервер править/настраивать. Проще всего заголовком разрешить доступ ко всем. А если нужна поддержка старых браузеров, придется ответ в jsonp отдавать. Все это в статьях про CORS написано.
...
Рейтинг: 0 / 0
10.02.2016, 12:03
    #39167436
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
так может убрать dataType: 'jsonp'?
...
Рейтинг: 0 / 0
10.02.2016, 12:42
    #39167488
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
По разному пробую..вариант с json:

Код: javascript
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
    <script type="text/javascript">

        function WCFJSON()
        {

            jQuery.ajax({
                type: 'Get',
                url: 'http://msk-dwh-02/WcfHelloCurTime_deploy/HelloCurTime.svc/GetData',
                data: { "name" : "TestUser" },
                contentType: "application/json;charset-uf8",
                dataType: "json",
                success: ServiceSucceeded,
                error: ServiceFailed
            });
        }
 
        // ---- WCF Service call backs -------------------
 
        function ServiceFailed(result)
        {
            Log('Service call failed: ' + result.status + '  ' + result.statusText);
        }
 
        function ServiceSucceeded(result)
        {
            var resultObject = result.MyFunctionResult;
            Log("Success: " + resultObject);
        }
 
        // ---- Log ----------------------------------------
        // utility function to output messages
 
        function Log(msg)
        {
            $("#logdiv").append(msg + "
");
        }
        </script>




        </head>
        <body onload="WCFJSON()">
            <div id="logdiv"></div>
        </body>



Возвращает то, что на скриншоте..

В интерфейсе веб-сервиса пишу:

<OperationContract()> _
<WebInvoke(Method:="GET", BodyStyle:=WebMessageBodyStyle.Wrapped, ResponseFormat:=WebMessageFormat.Json)> _
Function GetData(ByVal name As String) As String

В самом веб сервисе пишу:

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class HelloCurTime_Service
Implements IHelloCurTime_Service


Public Function GetData(ByVal name As String) As String Implements IHelloCurTime_Service.GetData
Return String.Format("Hello, " + name + "! Now is " + Now.ToString)
End Function

....
...
Рейтинг: 0 / 0
10.02.2016, 12:44
    #39167491
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
В веб-конфиге вроде бы все что нужно прописано..

Код: xml
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation strict="false" explicit="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>


<standardEndpoints>
    <webHttpEndpoint>
        <standardEndpoint crossDomainScriptAccessEnabled="true"></standardEndpoint>
    </webHttpEndpoint>
    <webScriptEndpoint>
         <standardEndpoint crossDomainScriptAccessEnabled="true"></standardEndpoint>
    </webScriptEndpoint>
</standardEndpoints>

<bindings>
    <webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
    </webHttpBinding>
</bindings>




    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      
      <endpointBehaviors>
        <behavior name="EndpBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
      
    </behaviors>
    


    
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="WcfHelloCurTime.HelloCurTime_Service">
        <endpoint address="" binding="webHttpBinding" contract="WcfHelloCurTime.IHelloCurTime_Service" behaviorConfiguration="EndpBehavior" />
      </service>
    </services>
    
    
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0"/>
    
  </system.serviceModel>



  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>

 <httpProtocol>
 <customHeaders>
 <add name="Access-Control-Allow-Origin" value="*" />
 <add name="Access-Control-Allow-Headers" value="Content-Type" />
 <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
 </customHeaders>
 </httpProtocol>

  </system.webServer>

</configuration>
...
Рейтинг: 0 / 0
11.02.2016, 21:58
    #39169075
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
Santa89,

Я не в курсе, в каком месте в дотнете что должно прописываться. Но на скриншоте явно видно, что на запрос OPTIONS отдается 405 (Method Not Allowed).
Должны обрабатываться и OPTIONS, и GET.
...
Рейтинг: 0 / 0
11.02.2016, 23:15
    #39169113
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите запустить веб-сервис из JS
А может быть в <add name="Access-Control-Allow-Headers" value="Content-Type" /> нужно писать не Content-Type а JSON ?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите запустить веб-сервис из JS / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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