【问题标题】:Access JsonResult in JQuery在 JQuery 中访问 JsonResult
【发布时间】:2019-08-07 01:25:11
【问题描述】:

我有一个 ajax 调用,它在我的 razor 页面模型中返回以下方法:

return new JsonResult(new { success = "false", data = "Invalid model state error." });

这会将以下结果返回给客户端:

{"$id":"1","success":"false","data":"无效模型状态错误。"}

但是我很难访问 Jquery 中的值。这是我尝试过的:

function onCompleted(result) {
  alert(result.success); 
  alert(result[0].success);       
}

错误信息:

未捕获的类型错误:无法读取未定义的属性“成功” 在 HTMLFormElement.onCompleted

Ajax 语法要求:

<form asp-page="./MultiEdit" asp-page-handler="CreateInvoiceItem" id="formInvoiceItem"
      data-ajax="true"
      data-ajax-method="post"
      data-ajax-complete="onCompleted"
      data-ajax-failed="onFailed">
      ....
</form>

观看:

【问题讨论】:

  • 您能添加完整的$.ajax 语法吗?不应该是onComplete吗? stackoverflow.com/questions/1021062
  • @DaveAnderson 代码按要求添加,我将其定义为onCompleted。 onCompleted 方法运行,我只是无法访问结果。
  • console.log(result) 并告诉我们是否真的是 json 对象或 xhr ,如果不是 json 对象,您将需要获取该值并给它一个变量并使用类似 JSON.stringify 的东西使其成为 json 并访问键/值 variablename.success
  • 小心responseJson 将是未定义的,正确的属性是responseJSON。很高兴您找到了解决方案。

标签: jquery ajax asp.net-core


【解决方案1】:

jQuery Unbotrusive AJAX Callback 返回一个 jqXHR;

当使用 jQuery 发出 AJAX 请求时,会返回一个 jqXHR 对象。 这可用于您通过指定的回调函数 data-ajax-completedata-ajax-successdata-ajax-failure 属性。

假设响应的Content-Typejson,那么jqXHR 应该有一个responseJSON 属性。

如果指定了json,则使用jQuery.parseJSON 解析响应 在作为对象传递给成功处理程序之前。解析的 JSON 对象通过 responseJSON 属性提供 jqXHR 对象。

以下内容应为您提供响应中的状态和消息;

function onCompleted(xhr) {
  alert(xhr.reponseJSON.success); 
  alert(xhr.reponseJSON.data);       
}

【讨论】:

  • 不幸的是,我仍然收到以下错误:Cannot read property 'success' of undefined at HTMLFormElement.onCompleted
  • 你能在开发工具中添加一个断点,看看xhr有什么属性吗?它至少应该包括responseXMLresponseText
  • 我还不能让客户端调试工作。我会试试的。
  • 好的,它的 responseJSON 是 Object {$id: "1", success: true, data: Object}
  • 解决方案是使用data-ajax-success 而不是data-ajax-complete,这使我可以直接访问我的成功变量function onSuccess(result) { alert(result.success);} 在完整回调中尝试通过xhr.responseJson.success 访问该变量确实不工作。
猜你喜欢
  • 2021-12-24
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多