javascript - 来自 Rails 控制器的 Javascript 响应导致 Uncaught SyntaxError: Unexpected token :
问题描述
我有一个创建关系的表单,当提交表单时,应该返回添加新连接节点的 javascript 代码以及将它们连接到 cytoscape 图的关系:
表格:
<%= form_for Relation.new, :url => url_for(:controller => 'relations', :action => 'add_dependency'), remote: true do |f| %>
<%= f.hidden_field :to_id, :value => @article.id %>
<%= f.hidden_field :graph, :value => 1 %>
<%= f.select :from_id, [], {}, {class: "select-article"} %>
<%= f.submit "Add a dependency of this article." %>
<% end %>
控制器代码:
def add_dependency
@relation = Relation.find_or_create_by(relation_params)
@relation.user << current_user
respond_to do |format|
if @relation.save
elements = json_for_cytoscape(@relation.from.self_and_all_dependencies_of_depth_and_less(3))
format.json { render :show, status: :created, location: @relation }
format.js { render js: "ancestors.add( #{elements} ); console.log('Hello');" }
else
format.json { render json: @relation.errors, status: :unprocessable_entity }
end
end
end
我在 javascript 控制台中收到此错误(并且没有“Hello”):
Uncaught SyntaxError: Unexpected token :
at processResponse (rails-ujs.self-8944eaf3f9a2615ce7c830a810ed630e296633063af8bb7441d5702fbe3ea597.js?body=1:244)
at rails-ujs.self-8944eaf3f9a2615ce7c830a810ed630e296633063af8bb7441d5702fbe3ea597.js?body=1:173
at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.self-8944eaf3f9a2615ce7c830a810ed630e296633063af8bb7441d5702fbe3ea597.js?body=1:228)
这是回应:
ancestors.add( {:edges=>[], :nodes=>[{:data=>{:id=>200, :title=>"Test Yourself: Area & arc length using calculus", :href=>"http://localhost:3000/articles/200", :rank=>0.000459770114943, :color=>"grey"}}]} ); console.log('Hello');
解决方案
我通过添加 to_json 解决了这个问题:
json_for_cytoscape(@relation.from.self_and_all_dependencies_of_depth_and_less(3)).to_json
推荐阅读
- jquery - 无法获取元素的索引
- linux - 如何从 SFTP 服务器获取文件并将它们移动到 bash 脚本中的另一个文件夹?
- selenium - Selenium:等待 Tomcat 启动
- javascript - 使用 json_encode() 并且仍然在对象中发送数组
- c++ - clang++ 无法编译 hello world
- curl - 如何在 Ansible 中执行 curl -k -O curl -k -O "https://xyza/etc/abc.tgz"
- java - java.io.FileNotFoundException“访问被拒绝”
- odoo - 如何在python代码odoo中调用工资规则
- nuxt.js - 如何在 nuxt.js 和引导站点中平滑滚动?
- kubernetes - Kubernetes 配置文件的通用位置