对于学校,我必须用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,我感觉更好。
美好的一天,谢谢你的帮助! :)
答案 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