Получить данные из ответа AJAX - PullRequest
3 голосов
/ 10 мая 2011

Для школы мне нужно разработать клиент Twitter с ASP.NET.

В приложении у меня есть список твитов со ссылкой для удаления.Эта ссылка создается с помощью помощника Ajax.ActionLink (), и я указал функцию обратного вызова для события OnSuccess.

Эта ссылка в порядке: действие выполнено, обратный вызов запущен, НО я не могу получить доступ к отправленным даннымв ответе Ajax.

Обратный вызов получает только один аргумент.Вот дамп этого объекта:

>> Sys.Mvc.AjaxContext
$0: 0
$1: null
$2: Sys.Net.XMLHttpExecutor
$3: Sys.Net.WebRequest
$4: null

Где мой responseText?Я знаю, что ответ имеет контент (в соответствии с инструментами разработчика Chrome), и я действительно хочу получить к нему доступ.

Бонус: может ли Ajax-клиент автоматически анализировать ответ как JSON (действие возвращает JSON правильно с помощью метода JSON))?

Спасибо!;)


Срок окончания школьного проекта истек.В ответе я использовал get_data.

Я очень разочарован отсутствием документации для этой тривиальной необходимости.Даже сейчас я знаю способ, я не могу найти это на MSDN ... Такая жалость.: (

Возвращаясь к моему драгоценному Ruby on Rails, я чувствую себя лучше.

Добрый день и спасибо за помощь в любом случае!:)

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Попробуйте вызвать get_object () для вашего AjaxContext, чтобы получить объект javascript или get_data (), чтобы получить текст.Однако более простой способ состоит в том, чтобы ваша функция OnSuccess принимала аргумент, который будет возвращать объект.

public ActionResult ReturnJson()
{
    return Json(new { TestMessage = "Hello, world!" }, JsonRequestBehavior.AllowGet);
}

И представление ...

<script type="text/javascript">
    function AjaxSuccess(obj) {
        alert(obj.TestMessage);
    }
</script>

@Ajax.ActionLink("Say Hi", "ReturnJson", new AjaxOptions() { OnSuccess = "AjaxSuccess" })
0 голосов
/ 25 мая 2011

Если вы хотите получить доступ к тексту responseText в вашем коде, вы не хотите использовать AJAX (асинхронный JavaScript и XML), вы хотите использовать SJAX (синхронный JavaScript и XML).

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

При использовании SJAX ваш код будет ожидать ответа, прежде чем продолжить выполнение.

Я не использую ASP.NET, поэтому не могу помочь с кодом.

Вот как это делается в JavaScript: JavaScript - AJAX / SJAX - отправка данных формы в сценарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...