所以我对此非常困惑。我有这个 CoffeeScript :
jQuery ->
$('.message').click (e) ->
e.preventDefault()
href = $(location).attr('href')
vote = { 'message': 'message': $('.messagebody').val(), 'photo_id' : href.substr(href.lastIndexOf('/') + 1)}
$.ajax '../messages/',
type: 'POST'
dataType: 'json'
data: JSON.stringify(vote)
error: (jqXHR, textStatus, errorThrown) ->
# console.log(jqXHR)
# console.log(textStatus)
console.log(errorThrown)
success: (data, textStatus, jqXHR) ->
$('.messagebody').val('')
console.log(vote)
当我触发此事件时,我的 Rails 服务器收到此消息:
{"{\"message\":{\"message\":\"asdfasdfasdfasdfasdfasdfasdf\",\"photo_id\":\"1\"}
}"=>nil, "controller"=>"messages", "action"=>"create"}
这是我接收此参数的 Controller :
class MessagesController < ApplicationController
before_filter :authenticate_user!
def create
@message = Message.new()
logger.debug JSON.parse(params)
@user = User.find_by_id(Photo.where(:id => params[:message][:photo_id]).pluck(:user_id))
@message.photo_id = params[:message][:photo_id]
@message.message = params[:message][:message]
@message.user_id = @user.id
@message.user_email = current_user.email
@message.to_user = @user.email
UserNotifier.send_message(@message).deliver
respond_to do |format|
format.json { render json: '{"message": ok}' , status: :created}
end
end
end
当我尝试解析参数时出现此错误
TypeError (no implicit conversion of ActionController::Parameters into String)
我也尝试过不对数据进行字符串化,而只是发送 json,我的服务器 100% 正常,但 javascript 返回此错误:
SyntaxError: Unexpected token o
我不太确定问题是什么,但我只需要解决一些错误,我已经尝试了几个小时来解决这个问题,但尚未找到解决方案。
最佳答案
如果你尝试一下怎么样:
jQuery ->
$('.message').click (e) ->
e.preventDefault()
href = $(location).attr('href')
vote = { 'message': $('.messagebody').val(), 'photo_id': href.substr(href.lastIndexOf('/') + 1)}
$.ajax(
{
url: '/messages',
type: 'POST',
dataType: 'json',
data: vote,
error: (jqXHR, textStatus, errorThrown) ->
console.log(errorThrown)
success: (data, textStatus, jqXHR) ->
$('.messagebody').val('')
console.log(vote)
}
)
您不应该需要序列化和反序列化参数。我注意到您的投票变量中有一个错误(消息键重复),至于您的 url/messages 应该可以正常工作
我在浏览器控制台中尝试了这个纯js,在你的控制台中尝试一下,只需更改所需的变量
jQuery(function(){
$('.message').click(function(e) {
e.preventDefault();
href = '/photos/123';
vote = {
'message': 'text',
'photo_id': href.substr(href.lastIndexOf('/') + 1)
};
$.ajax({
url: '/foods',
type: 'GET',
dataType: 'json',
data: vote,
error: function(jqXHR, textStatus, errorThrown){
console.log(errorThrown);
},
success: function(data, textStatus, jqXHR){
$('.messagebody').val('');
console.log(vote);
}
});
});
});
关于javascript - 解析 Rails 中的 JSON 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182938/