【问题标题】:Problems using Ajax call to recieve data record使用 Ajax 调用接收数据记录的问题
【发布时间】:2013-04-03 20:48:47
【问题描述】:

我在进行 ajax 调用以接收数据库对象时遇到了一些问题。我正在视图中进行 ajax 调用,以将视图中 HTML 元素之一的值传递给控制器​​中的方法,该方法使用该值搜索并返回现有数据记录。

我的 ajax 调用:

$.ajax({
  url: "/MyController/MyFunction/",
  data: {Value: myvalue},
  type: 'GET',
  success: function (result) {
      //do something...
  }

我的控制器方法:

 Function MyFunction(Value as String) As MyClass
   Dim record = SearchFunction(Value)

   Return record
 End Function

我的数据类:

Public Class MyClass

  Property Name As String
  Property Age As Integer
  Property DOB As Date
End Class

我遇到的问题是调用中收到的“结果”返回一个带有我的模型名称的字符串,即“MyClass”,即使控制器工作正常并且“记录”已成功设置为正确的数据记录。

在搜索互联网后,我尝试了各种不同的潜在解决方案,包括 ajax 调用中的不同数据类型以及 $.getJSON() 等不同的 ajax 调用,但到目前为止没有任何效果。

【问题讨论】:

    标签: javascript jquery ajax vb.net asp.net-mvc-4


    【解决方案1】:

    您需要先将对象转换为 JSON,然后再将其返回给客户端。

    return Json(record);
    

    我现在不能测试它,所以我不知道它是否会自动解析整个对象或者你需要手动进行映射。

    顺便说一句:您可能还需要使用 JsonResult 类型来代替 ActionResult
    编辑:我刚刚注意到你没有在那里使用 ActionResult 。我不懂VB,所以我不确定你的语法是否正确。您可能肯定会尝试返回 JsonResult 而不是字符串(这也可能是问题的一部分)。

    顺便说一句:我会在你的 ajax 调用中使用 POST :)

    【讨论】:

    • 嗨,Dampe,感谢您的反馈,我会尽快尝试您的建议。至于 ActionResult ......这不是语法错误,我不想返回带有已发布数据的视图,只需要返回记录,这样我就可以在我正在处理的当前视图上使用它。我在同一个视图中使用了类似的调用,它有效,但我只是用它来取回单个字符串或布尔值。在这种情况下,函数看起来像 Function 'MyFunction(Value as String) As String'
    • 任何细节?错误?它在哪里失败?还要检查类似的问题;)例如您可以在此处查看到 json 的手动映射:stackoverflow.com/questions/227624/…
    • 如果我将函数类型设置为“JsonResult”,则 ajax 调用找不到请求。此外,ActionResult 和 JsonResult 都会返回一个新视图。我可以通过使用 ActionLink 并在强类型视图中传递模型来使其工作,但这不是我想要在这里做的。需要取回记录,以便我可以在现有页面上使用它而无需导航。
    • ActionResult 并不总是“返回视图”。 ActionResult 可以是从 Action 方法返回的任何内容,例如 ContenrResult、FileResult、RedirectResult、JsonResult、ViewResult 或 PartialViewResult。您必须将返回类型设置为 ActionResult 或 JsonResult,您需要像 @Dampe 提到的那样对返回类进行 Json 编码。最后,你应该在你的函数前面加上公共标识符。 Public Function MyFunction(byval Value as string) as ActionResult
    • 感谢汤米的帮助,我会先试试看的:)
    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2017-09-26
    • 2014-05-16
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多