Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未调用AJAX成功函数_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Javascript 未调用AJAX成功函数

Javascript 未调用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

我正试图从对fire的AJAX调用中获得success函数。我知道它工作正常,因为我正在点击我自己的API,我可以看到它正在正确点击URL,服务器正在输出HTTP 200

我认为这是因为服务器正在输出json,所以我尝试在AJAX调用中说明这一点,但success函数仍然无法工作。这是我的密码

ajax

$.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