powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите запустить веб-сервис из JS
18 сообщений из 18, страница 1 из 1
Помогите запустить веб-сервис из JS
    #39164274
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть веб-сервис (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
Помогите запустить веб-сервис из JS
    #39164348
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну например, это работает только в ie: style="behavior:url(webservice.htc)"
и то вроде с 10й версии и ниже.

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

Код: 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
Помогите запустить веб-сервис из JS
    #39164385
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стороне самого WCF сервиса я ничего не настраивал, просто опубликовал и всё.
Возможно что то прописывать нужно, но я пока в этой теме профан, просто для себя делаю, только начинаю изучать.
...
Рейтинг: 0 / 0
Помогите запустить веб-сервис из JS
    #39164575
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/forum/1198990/gde-prodavat-svoe-prilozhenie

Забавно :)

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

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

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

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

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

P.S.: а ASP.NET страницу завернуть в гаджет - это что-то новенькое.
...
Рейтинг: 0 / 0
Помогите запустить веб-сервис из JS
    #39165764
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите запустить веб-сервис из JS
    #39165930
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть какие нибудь подсказки хотябы? Ведь JS вроде как вернул мне то что нужно с сервиса, только вот распарсить видимо не может..
...
Рейтинг: 0 / 0
Помогите запустить веб-сервис из JS
    #39167139
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89Ведь JS вроде как вернул мне то что нужно с сервиса
Нет, не то. У вас же написано jsonp, а это обычный json.

Нужно сервер править/настраивать. Проще всего заголовком разрешить доступ ко всем. А если нужна поддержка старых браузеров, придется ответ в jsonp отдавать. Все это в статьях про CORS написано.
...
Рейтинг: 0 / 0
Помогите запустить веб-сервис из JS
    #39167436
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так может убрать dataType: 'jsonp'?
...
Рейтинг: 0 / 0
Помогите запустить веб-сервис из JS
    #39167488
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По разному пробую..вариант с 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
Помогите запустить веб-сервис из JS
    #39167491
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В веб-конфиге вроде бы все что нужно прописано..

Код: 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
Помогите запустить веб-сервис из JS
    #39169075
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89,

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


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