#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 допустим, его можно использовать таким же образом…