Rails ajax 不返回 json 格式
Rails ajax not returning json format
我正在尝试使用 ajax 从我的控制器获取信息。
但它没有像我预期的那样返回 json。也许我不是路由冲突,但不确定。
我的控制器:
class TicketsController < ApplicationController
before_action :authenticate_user!
respond_to :js, :json, :html
//...
def fill_category_select
@category_by_system = Category.where(system_id: params[:sent_id])
render json: @category_by_system
end
我的routes.rb:
resources :tickets
get 'tickets/fill_category_select/:sent_id', to: 'tickets#fill_category_select'
我在 haml 文件上的脚本:
:javascript
$(document).ready( function(){
$('#ticket_system').change(function(){
$.ajax({
url: "fill_category_select",
type: "GET",
dataType: "json",
data: { sent_id: $('#ticket_system').val() },
async: true,
success: function(data, textStatus, xhr) {
for(var i in data){
var id = data[i].id;
var title = data[i].description;
$("#ticket_category").append(new Option(title, id));
}
},
error: function(XMLHttpRequest, errorTextStatus, error){
alert("Failed: "+ errorTextStatus+" ;"+error);
}
});
});
});
当我触发事件并执行请求时:
REQUEST URL:
http://localhost:3000/tickets/fill_category_select?sent_id=44
REQUEST METHOD: GET
STATUS CODE: 200 OK
TYPE: html
并且返回并显示 javascript 警报的错误是:"SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"
这就像没有击中我的 fill_category_select,因为我试图加注 'error' 但它只是显示相同的错误。
谁能给我指路?
------------ 编辑
我发现线路不通
当我添加资源 :tickets 时,除了:[:show]
该请求给我带来了“404 错误”,这不仅仅是覆盖问题,路由根本不起作用。
而且我仍然需要发现我做错了什么。有什么建议吗?
在您的 routes.rb 文件中,请用这个替换现有文件。
get 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', defaults: { format: 'json' }
我认为这会起作用
我通过添加解决了它:
match 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', via: :get
路线我的方法fill_category_select
我正在尝试使用 ajax 从我的控制器获取信息。
但它没有像我预期的那样返回 json。也许我不是路由冲突,但不确定。
我的控制器:
class TicketsController < ApplicationController
before_action :authenticate_user!
respond_to :js, :json, :html
//...
def fill_category_select
@category_by_system = Category.where(system_id: params[:sent_id])
render json: @category_by_system
end
我的routes.rb:
resources :tickets
get 'tickets/fill_category_select/:sent_id', to: 'tickets#fill_category_select'
我在 haml 文件上的脚本:
:javascript
$(document).ready( function(){
$('#ticket_system').change(function(){
$.ajax({
url: "fill_category_select",
type: "GET",
dataType: "json",
data: { sent_id: $('#ticket_system').val() },
async: true,
success: function(data, textStatus, xhr) {
for(var i in data){
var id = data[i].id;
var title = data[i].description;
$("#ticket_category").append(new Option(title, id));
}
},
error: function(XMLHttpRequest, errorTextStatus, error){
alert("Failed: "+ errorTextStatus+" ;"+error);
}
});
});
});
当我触发事件并执行请求时:
REQUEST URL: http://localhost:3000/tickets/fill_category_select?sent_id=44
REQUEST METHOD: GET
STATUS CODE: 200 OK
TYPE: html
并且返回并显示 javascript 警报的错误是:"SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"
这就像没有击中我的 fill_category_select,因为我试图加注 'error' 但它只是显示相同的错误。
谁能给我指路?
------------ 编辑
我发现线路不通
当我添加资源 :tickets 时,除了:[:show]
该请求给我带来了“404 错误”,这不仅仅是覆盖问题,路由根本不起作用。
而且我仍然需要发现我做错了什么。有什么建议吗?
在您的 routes.rb 文件中,请用这个替换现有文件。
get 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', defaults: { format: 'json' }
我认为这会起作用
我通过添加解决了它:
match 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', via: :get
路线我的方法fill_category_select