用Phoenix框架如何 render json 数据?
用Rails的话可以这样从控制器发送json数据到前端:
def get_posts
@posts = Post.where(user_id: params[:user_id].to_i)
if request.xhr?
render :json => {
:posts => @posts
}
end
end
在前端这样接收处理:
$.ajax({
type: "GET",
url: "<%= get_post_path %>",
data: {user_id: $("#user_id").val()},
success: function(data, textStatus, xhr) {
alert(data.posts);
//...
}
按照phoenix默认的CRUD方式生成的例子,这样:
mix phx.gen.json Accounts User users name:string age:integer
mix ecto.migrate Repo
在控制器中这样传数据:
def show(conn, %{"id" => id}) do
user = Accounts.get_user!(id)
render(conn, "show.json", user: user)
end
取json数据也OK:
curl http://localhost:4000/users/2
{"data":{"name":"a","id":2,"age":1}}
但是现在在一种特殊路由情况下,如:
post "/update_item", PostController, :update_item
控制器中这样:
def update_item(conn, %{"user_id" => user_id})
# ...
render conn, "update_item.json", user: user
end
不行,提示没有 update_item.json
这个文件,但实际上并不需要这样的文件, show.json
也不存在。
那么这种情况如何能向前端发送json数据呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简单说就是你需要去写
PostView
,加一个函数类似:详情参考官方文档:https://hexdocs.pm/phoenix/vi...