从ajax响应中获取数据

时间:2011-05-10 13:46:36

标签: asp.net ajax

对于学校,我必须用ASP.NET开发一个Twitter客户端。

在应用程序中,我有一个带有删除链接的推文列表。这个链接是用帮助器Ajax.ActionLink()创建的,我为OnSuccess事件指定了一个回调函数。

此链接没问题:执行操作,触发回调但是我无法访问Ajax响应中发送的数据。

回调只接收一个参数。这是这个对象的转储:

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

我的responseText在哪里?我知道响应有内容(根据Chrome开发人员工具),我真的想要访问它。

Bonus:Ajax客户端能否自动将响应解析为JSON(该操作使用JSON方法正确返回JSON)?

谢谢! ;)


这个学校项目的截止日期已经结束。 我在响应中使用了get_data。

我对这个微不足道的需求缺乏文档感到非常失望。即使现在我知道的方式,我在MSDN上找不到......真是太可惜了。 :(

回到我宝贵的Ruby on Rails,我感觉更好。

美好的一天,谢谢你的帮助! :)

2 个答案:

答案 0 :(得分:2)

尝试在AjaxContext上调用get_object()来获取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" })

答案 1 :(得分:0)

如果要在代码中访问responseText而不想使用AJAX(异步JavaScript和XML),则需要使用SJAX(同步JavaScript和XML)。

使用AJAX时,您的代码不会等待responseText,它将继续执行,所以如果您稍后在代码中尝试引用它,它可能无法正常工作,因为它可能尚未处理。

使用SJAX时,您的代码将在继续执行之前等待responseText。

我没有使用ASP.NET,所以我无法帮助解决代码问题。

以下是在JavaScript中完成的操作:JavaScript - AJAX / SJAX - Submit Form Data to a Script