【问题标题】:Get data from the ajax response从 ajax 响应中获取数据
【发布时间】:2011-08-22 12:07:35
【问题描述】:

为了学校,我必须用 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 开发者工具),我真的很想访问它。

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

谢谢! ;)


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

我对这种微不足道的需求缺乏文档感到非常失望。即使现在我知道路了,我在 MSDN 上也找不到……真可惜。 :(

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

美好的一天,无论如何感谢您的帮助! :)

【问题讨论】:

    标签: asp.net ajax


    【解决方案1】:

    尝试在 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" })
    

    【讨论】:

      【解决方案2】:

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

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

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

      我不使用 ASP.NET,所以无法帮助编写代码。

      这是在 JavaScript 中的实现方式:JavaScript - AJAX / SJAX - Submit Form Data to a Script

      【讨论】:

      • 返回结果时调用 OnSuccess
      猜你喜欢
      • 2015-06-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      相关资源
      最近更新 更多