webserivce вызывается из моего jquery

#jquery #ajax #service #web

#jquery #ajax #Обслуживание #веб

Вопрос:

Я создал подобный код для доступа к AddNums методов в моем веб-сервисе. Я отправляю данные через веб-сервис для получения выходных данных. но он не дает никакого результата.

    <html xmlns="http://www.w3.org/1999/xhtml">
   <script src="scripts/Jquery v1.6.4.js" type="text/javascript"></script>
    <script type="text/javascript">

   $(document).ready(function () {
    $("#btn").click(function () {
        alert('I have been clicked');
        $.ajax({
            type: "POST",
            url: "http://localhost:5554/Service1.svc",
            data: "{2,3}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                $("#output").text(msg.d);
            }
        });

    });
    });

    </script>
    <head runat="server">
    <title></title>
     </head>
     <body>
     <form id="form1" runat="server">

      <input type="button" id="btn" value="Click Me" /> <br /> <br />

       <span id="output"></span>

       </form>
      </body>
       </html>
  

Реализация webserivce. Я протестировал веб-сервис со встроенным клиентом в Visual Studio, он работает отлично.

   namespace WcfServiceTest
  {

    [System.Web.Script.Services.ScriptService]
   public class Service1 : IService1
   {
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
        if (composite == null)
        {
            throw new ArgumentNullException("composite");
        }
        if (composite.BoolValue)
        {
            composite.StringValue  = "Suffix";
        }
        return composite;
    }

   [System.Web.Services.WebMethod(BufferResponse = false)]
    public int AddNums(int val1, int val2)
    {
        return (val1   val2);
    }

     }
    }
  

Комментарии:

1. Вам действительно нужен этот ужасный пробел в вашем имени файла? Обычно люди используют _ или - или . в этом случае.

2. Я не очень хорошо знаком с ASP, поэтому могу ошибаться, но разве вы не должны публиковать ‘val1 = 1 amp; val2 = 2’ вместо JSON?

3. И разве вы не должны использовать просто «msg» вместо «msg.d» при выводе результата?

Ответ №1:

Это неправильный путь

 data: "{2,3}",
  

Правильный путь

 data: {para1:value1,para2:value2},
  

для передачи параметра во внешний файл.

Комментарии:

1. Привет, я внес в это изменения, даже тогда он не работает. $(document). ready(функция () { $(«#btn»).click(функция () { оповещение (‘Меня щелкнули’); $.ajax({ тип: «POST», url: » localhost:5554/Service1.svc/AddNums «, данные: ‘{val1:»2″, val2:»3»}’, ContentType: «application / json; charset=utf-8», Тип данных: «json», success: функция (msg) { $(«#output»).text(msg.d); } }); }); });

2. проблема, которую я вижу в вашем коде, заключается в том, что вы заключаете параметр данных в одинарные кавычки, которые не требуются. также после параметра url точка с запятой не требуется. Значения val1 и val2 стали переменными post, потому что вы используете post-запрос, поэтому получите эти переменные в файле вашего сервера, например $ _POST[‘val1’] и так далее.