получение данных, возвращаемых jQuery Ajax в Asp.Net

#c# #javascript #asp.net #jquery

#c# #javascript #asp.net #jquery

Вопрос:

Я новичок в jQuery и не понимаю, как в jQuery Ajax возвращает данные. У меня есть несколько простых функций для получения некоторых данных, как показано ниже

 [WebMethod(EnableSession = false)]
protected int SignIn()
{
    return 0;
}
  

и на моей странице .aspx у меня есть это

 $(document).ready(function () {
        $("#si").click(function 
            () {
            $.ajax({
                type: "POST",
                url: "SignIn.aspx/SignIn",
                contentType: "application/json",
                success: function (txt) {
                    alert(txt);
                }
            });
        });
    });
  

но в предупреждении я получаю весь файл SignIn.aspx (все html-теги и так далее). как предупредить 0, который возвращает SignIn ()?Спасибо

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

1. функция входа находится в веб-сервисе .asmx?

Ответ №1:

Сделайте SignIn метод статическим и общедоступным и покажите оповещение со следующим кодом: alert(txt.d);

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

1. попробуйте использовать alert(txt); объяснение общего свойства здесь: encosia.com/never-worry-about-asp-net-ajaxs-d-again

Ответ №2:

Вы запрашиваете данные в ASPX-файле, и я думаю, что это должен быть ASMX.

Ознакомьтесь с сообщением Дейва Уорда, где я опирался на все это:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization /

Самый простой пример, который я мог бы привести, выглядит так:

Добавьте веб-сервис (ASMX), содержащий

 using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
   [WebMethod]
   public int Status(int input) {
      return input   1;
   }
}
  

Затем в вашем HTML сделайте

 <html>
<head>
    <title>Test</title>
    <script src="jquery-1.6.2.min.js" ></script>
</head>
<body>
<script>
  $(function () {
    $.ajax({
      url: 'WebService.asmx/Status',
      data: '{ input: 0 }',
      type: 'POST',
      dataType: 'json',
      contentType: 'application/json',
      success: function (data, status) {
        alert(data);
        alert(typeof data);
      }
    });
  });
</script>
</body>
</html>
  

При вызове ajax строка, определенная в data, является входом для веб-метода. Имена должны совпадать. При успешном обратном вызове первое предупреждение показывает возвращенное значение (ввод плюс один), а второе предупреждение показывает, что это число, а не строка. Поскольку для типа данных задано значение JSON, веб-метод возвращает JSON, позволяющий корректно вводить данные.

Надеюсь, это поможет.

Ответ №3:

Попробуйте этот пример. Я передал идентификатор из aspx в обработчик и только что вернулся оттуда, чтобы снова отобразить данные на стороне сервера в aspx

это примерный пример …..

Код обработчика:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TestProject
{
    /// <summary>
    /// Summary description for TestHandler1
    /// </summary>
    public class TestHandler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string id = context.Request["id"];
            context.Response.ContentType = "text/plain";
            context.Response.Write(id);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
  

и в aspx

     <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  </head>
<body>
    <form id="form1" runat="server">

    </form>
    <script type="text/javascript">
        $(function () {
            $.ajax({
                type: 'POST',
                url: 'TestHandler.ashx?id='  1,
                data: 'id='   1,
                success: function (msg) {
                    alert(msg);
                }
            });

        });
    </script>
</body>
</html>
  

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

1. Это вернет число, переданное в виде строки, но я подозреваю, что OP хотел бы, чтобы возвращались данные JSON, поэтому int является int .

2. @nickd в op сказано «jQuery и не понимаю, как в jQuery Ajax возвращает данные» .. Я объясняю это как пример к этому комментарию..

3. спасибо, но я не совсем понимаю, вы использовали POST в ajax, но использовали URL для отправки данных? является ли URL-адрес только для определения метода?

4. Ответная запись — это то, что будет возвращено… вы могли бы собрать json и записать его. если json допустим, его можно использовать таким же образом…