Javascript 未调用AJAX成功函数
我正试图从对fire的AJAX调用中获得success函数。我知道它工作正常,因为我正在点击我自己的API,我可以看到它正在正确点击URL,服务器正在输出HTTP 200 我认为这是因为服务器正在输出json,所以我尝试在AJAX调用中说明这一点,但success函数仍然无法工作。这是我的密码 ajaxJavascript 未调用AJAX成功函数,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我正试图从对fire的AJAX调用中获得success函数。我知道它工作正常,因为我正在点击我自己的API,我可以看到它正在正确点击URL,服务器正在输出HTTP 200 我认为这是因为服务器正在输出json,所以我尝试在AJAX调用中说明这一点,但success函数仍然无法工作。这是我的密码 ajax $.ajax('http://localhost:3000/api/users/show/:id', { type: 'GET', dataType: 'json', content
$.ajax('http://localhost:3000/api/users/show/:id', {
type: 'GET',
dataType: 'json',
contentType: "application/json",
data: {
id: 1
},
success: function(response) {
return alert("Hey");
}
});
api方法
class UsersController < ApplicationController
respond_to :json
def show
respond_with User.find(params[:id])
end
end
我会添加一个完整的函数并检查文本状态。这将提供解决问题所需的信息
complete: function(response, textStatus) {
return alert("Hey: " + textStatus);
}
这在我很久以前也发生过,我通过将数据类型更改为文本,并通过eval手动将其转换为json对象来解决这一问题
$.ajax('http://localhost:3000/api/users/show/:id', {
type: 'GET',
dataType: 'text',
contentType: "application/json",
data: {
id: 1
},
success: function(response) {
response = JSON.parse(response);
return alert("Hey");
}
});
希望这对你有用。我想问题是我所经历的,我想我已经找到了答案。正如我从“layouts/application中的Rendered main/index.HTML.erb”推断的那样,看起来您的调用正在检索HTML视图,尽管我不熟悉您使用的API堆栈 我在ASP.NET MVC 5上的症状是调用了complete,但没有调用error、success或timeout。在响应对象上,状态为200,状态文本为“OK”,但textStatus参数为“parsererror”
responseText是我期望的html,但我忘记了我已经从检索json转移到html,所以在将数据类型:“json”更改为数据类型:“html”后,它现在可以工作了。考虑到这个类,它显然没有调用您期望的方法:
class UsersController < ApplicationController
但您的日志显示:
Processing by MainController#index as JSON
我猜你的路线错了。检查路由以及它为什么不调用userscoontroller#show
方法。当然,通过浏览器(chrome、firefox),您应该能够检查请求的响应,以确保它实际接收到json或html
因为它正试图呈现
main.html.erb
。我并不奇怪数据类型:“json”
不起作用。但如果您实际返回的是有效的json,那么它应该可以工作。但是您的rails日志显示您可能正在返回html。我也遇到了同样的问题,我在关闭success函数后添加了冒号来解决它。我认为这可能与AJAX调用无关。答案是警告是可以忽略的。你知道真正的意思吗?你试过添加一个错误回调吗?GET不应该有一个内容类型我正在查看数据类型,我想这就是我想要的。我希望返回User
模型的JSON对象。在网上搜索之后,我也将此视为一种解决方案。但在我的例子中,它恰好不起作用;相反,由于XSS风险,您永远不应该使用eval函数
Processing by UsersController#show as JSON
Processing by MainController#index as JSON