ASP.NET Generic HTTP Handler (.ashx), поддерживающий JSONP - PullRequest
3 голосов
/ 13 сентября 2010

Может ли кто-нибудь показать пример обработчика HTTP, который возвращает JSON и поддерживает междоменные вызовы. Я использую jQuery getJSON (), который отправляет запрос в файл .ashx на моем веб-сервере.

Я понимаю, что мне нужно добавить? Callback =? на мой URL в URL-адресе getJSON (), но я не уверен, что нужно сделать на сервере в моем файле Ashx?

Ответы [ 2 ]

10 голосов
/ 13 сентября 2010

Разобрался. Я добавил эту функцию в свой обработчик и вызвал ее:

void WriteCallback(HttpContext context, string json)
        {
            context.Response.Write(string.Format("{0}({1});", context.Request["callback"], json));
        }

Тогда в браузере:

$(function () {
    $.getJSON('MyHandler.ashx?callback=?', { Foo: "Bar" }, function (data) {

        if (data.SomeCondition)
            $('#someElement').show();

    });
});
1 голос
/ 13 сентября 2010

Единственный способ, которым «междоменный домен» потенциально может стать проблемой, - это если вы используете какой-то механизм состояния (например, куки) как часть вызова. Что вы не должны делать.

В противном случае см. Следующую ссылку: ASP.NET - Передача JSON из jQuery в ASHX для получения информации. Есть несколько хороших примеров кода, чтобы показать вам, что делать.

...