【问题标题】:JQuery AJAX Call not returning Sucess functionJQuery AJAX调用不返回成功函数
【发布时间】:2015-10-26 21:56:29
【问题描述】:

我在下面有一个超级简单的 JQuery ajax 请求:

$.ajax("../ajax/data/items.json",
{ success: setContent, type: "GET", dataType: "json" });

function setContent(data, status, jqxhr) {

alert("Hello!");
}

json 以 200 响应加载到页面上。成功函数设置为 setContent()。但是成功功能永远不会运行,我不知道为什么。

问题:

  1. 我对成功函数如何工作的理解不正确吗?为什么函数 setContent() 没有在 Json 上运行 200 响应?

  2. setContent() 的参数是否由 JQuery 在后台填写?显然我没有在代码中的任何地方设置它,但是视频没有显示在任何地方添加参数。

我正在关注 Lynda.com 的教程:

http://www.lynda.com/jQuery-tutorials/AJAX-made-simple/183382/368483-4.html

特别是视频 AJAX 变得简单。

【问题讨论】:

  • 与往常一样,当您没有调用success 处理程序时,请安装一个error 处理程序并查看它告诉您错误是什么。

标签: javascript jquery json ajax


【解决方案1】:

问题很可能是您没有返回有效的 JSON。如果您将数据类型指定为 JSON 并返回其他内容,则不会调用成功处理程序。

语法没有错:

如您所见,如果您不指定 dataType,console.log 就会触发,因为它不关心它是否为 JSON。如果您指定,则不会记录任何内容。

$.ajax(window.location.href,
{ success: setContent, type: "GET", dataType: "json" });

function setContent(data, status, jqxhr) {

console.log("It worked!");
}

您可以将其复制到此站点上的开发工具中,看看删除 dataType 参数后会发生什么。

【讨论】:

  • 这似乎很有可能。这是一个猜测,但很有可能。确定的方法是(正如我在评论中建议的那样)是让 OP 为 Ajax 调用安装一个 error 处理程序并查看实际错误是什么。如果是 JSON 错误,将显示在错误处理程序中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 2014-07-08
  • 2013-01-23
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多