goldsoft Ответов: 2

Как вызвать webservice на HTML-странице с помощью JQuery?


Дорогие Все,

у меня есть веб-сервис, который получает 2 строки и возвращает, если они равны

Веб-сервис, который в http://127.0.0.1/HTML_SIMPLE_TEST/


[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    
    [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
         [WebMethod(Description = "Validate the login credentials")]
         public bool Validate(string UserName, string Password)
         {
              if (Password == "test" && UserName == "test")
                  return true;
              else
                  return false;
         }
    }


и у меня есть html-страница, которая вызывает этот веб-сервис и должна вернуть результат

<html  lang="en-US">
     <head>
         <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
         <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
         <script type="text/javascript" language="javascript">

         var Surl = "http://localhost:3031/WS_HTML/Service1.asmx/Validate";

         $(document).ready(function () {
             $("input#submit").click(function (event) {
                 //var uid = document.getElementById("UserName").value;
                 //var pwd = document.getElementById("Password").value;

                 var uid = "test";
                 var pwd = "test";

                 var dataString = "{ 'UserName' : '" + uid + "', 'Password' : '" + pwd + "'}";

                 $.ajax({
                     ServiceCallID: 1,
                     url: Surl,
                     type: 'POST',
                     data: dataString,
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",

                     success: function (result) {
                         returnVal = result.d;
                         alert(returnVal);
                     },

                     error: function (XMLHttpRequest, textStatus, errorThrown) {
                         returnVal = '';
                     }
                 });
             });
         });

 </script>

 </head>
     <body >
         <form method=post runat="server">
             <input  type="submit" />Connet to my WS
         </form>
     </body>
 </html>



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

):

спасибо,

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Видите ли вы какие-либо ошибки, зарегистрированные на вкладке консоли инструмента разработчика? Вы отладили код?

Kornfeld Eliyahu Peter

Вы уверены, что соединение установлено через порт 3031? Может быть, это динамический порт, назначенный VS?

goldsoft

я вижу, что ничего не происходит

Ranjeet Patel

http://localhost:3031/WS_HTML/Service1.asmx/Validate/UserName=test&пароль=тест
http://localhost:3031/WS_HTML/Service1.asmx/Validate/UserName=test/Password=test

Попробуйте запустить обе верхние ссылки и проверить, работает ли одна из них, тогда она работает
$.Аякс({
ServiceCallID: 1,
из этой строки попробуйте удалить ServiceCallID:1 и посмотрите, не повезет ли вам..

goldsoft

такой же.......

Ranjeet Patel

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

2 Ответов

Рейтинг:
2

Jinu _George

Ypu указали в jquery, что вывод из веб - метода находится в JSON foormat

(dataType: "json",)


Добавьте это перед веб - методом, если вы собираетесь вернуть вывод в виде JSON
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]


Рейтинг:
0

ZurdoDev

Вы сказали, что url-адрес находится по адресу http://127.0.0.1/HTML_SIMPLE_TEST/[^] и в вашем коде у вас есть другой url-адрес, http://localhost:3031/WS_HTML/Service1.asmx/Validate[^]

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