Javascript Rails ajax错误-SyntaxError:JSON中位于位置0的意外标记C
在我的视图文件中,我有以下jQueryAjax调用Javascript Rails ajax错误-SyntaxError:JSON中位于位置0的意外标记C,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,在我的视图文件中,我有以下jQueryAjax调用 <% if flash[:notice] %> <div class="notice"><%= flash[:notice] %></div> <% end %> . . . function updateFunction() { var input = JSON.stringify({data: hot.getData()}); $.ajax({
<% if flash[:notice] %>
<div class="notice"><%= flash[:notice] %></div>
<% end %>
.
.
.
function updateFunction() {
var input = JSON.stringify({data: hot.getData()});
$.ajax({
type: 'POST',
url: "/cars/create",
data: input,
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: create_data_succ,
error: create_data_error
});
}
function create_data_error(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
数据正在保存到db,但我在屏幕上看不到通知消息,而是收到了警告消息(错误回调jQuery AJAX)
SyntaxError:JSON中位于位置0的意外标记C
我做错了什么?非常感谢的任何帮助数据正确发送到控制器,因为数据保存到数据库;错误在于响应。您正在成功地创建一个
呈现“new”
,它将HTML作为对AJAX调用的响应发送回来。可能是这样的:
car = Car.new(name: params[:data][:name])
unless car.save
render json: { errors: error }
end
...
如果您需要html和json响应(无论出于何种原因),您可以通过respond\u to
respond_to do |format|
format.html { render :new }
format.json { render json: { ... } }
end
数据正确发送至控制器,因为数据保存至数据库;错误在于响应。您正在成功地创建一个
呈现“new”
,它将HTML作为对AJAX调用的响应发送回来。可能是这样的:
car = Car.new(name: params[:data][:name])
unless car.save
render json: { errors: error }
end
...
如果您需要html和json响应(无论出于何种原因),您可以通过respond\u to
respond_to do |format|
format.html { render :new }
format.json { render json: { ... } }
end
您是否再次在
创建数据成功()
中将响应转换为JSON?不,我没有,创建数据成功()
从未执行您返回的数据不是有效的JSON。在控制台的network选项卡中检查请求的responseText,查看返回的确切内容更改thisvar input=JSON.stringify({data:hot.getData()})
to=>var input=JSON.parse({data:hot.getData()})
您是否再次在创建数据成功()
中将响应转换为JSON?不,我不是,创建数据成功()
从未执行您返回的数据不是有效的JSON。在控制台的network选项卡中检查请求的responseText,查看返回的确切内容更改thisvar input=JSON.stringify({data:hot.getData()})
to=>var input=JSON.parse({data:hot.getData()})代码>感谢您的帮助,在使用respond_to do | format | format.html{render:new,注意:'Created'}format.json{render json:{…}}end
后,不再显示错误警报。但我的即时通知仍然没有出现。。有什么想法吗?因为您使用的是AJAX调用,我认为除非页面重定向,否则您不能使用flash通知。您可以返回通知并通过javascript显示它。感谢您的帮助,在使用respond\u to do | format | format.html{render:new,注意:'Created'}format.json{render json:{…}}end
后,不再显示错误警报。但我的即时通知仍然没有出现。。有什么想法吗?因为您使用的是AJAX调用,我认为除非页面重定向,否则您不能使用flash通知。您只需返回通知并通过javascript显示即可。