我在客户端有 jquery 代码,试图与 rails 服务器上的 ruby 通信。我目前正在尝试通过客户端进行登录。
这是用户单击提交按钮时执行的 jquery 代码。
$.ajax({
headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') },
type:"POST",
data: hash,
url: 'http://0.0.0.0:3000/users/sign_in.json',
success: function(data) {
alert('Success');
alert(JSON.stringify(data));
},
error: function(data) {
alert('Failed!');
alert(JSON.stringify(data));
},
});
});
我在rails服务器中监控日志,看到“Completed 200 OK in 387ms”,这意味着服务器进程运行良好,响应已经发送回客户端。
但是,在客户端而不是成功函数中,错误函数运行并且我得到{"readyState":0,"responseText":"","status":0,"statusText":"error"}
这是控制器中的代码
def create
resource = User.find_by_email(params[:user][:email])
return invalid_login_attempt unless resource
if resource.valid_password?(params[:user][:password])
sign_in(:user, resource)
resource.ensure_authentication_token
respond_to do |format|
format.html { redirect_to user_courses_path(current_user), notice: 'You are logged in' }
format.json { render :json=> { :auth_token=> current_user.authentication_token, :success=> true, :status=> :created }}
end
return
end
invalid_login_attempt
结尾
我尝试使用 firebug 并在我看到的 POST 请求的响应选项卡中
syntaxerror json.parse 数据意外结束
这意味着从服务器发送的响应不是正确的散列。我尝试使用
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d ' {"user":{"email":"asdf@jjpt.com","password":"password"}}' http://0.0.0.0:3000/users/sign_in
我得到以下回应{"auth_token":"zk1dyduMAo283mxP5o1m","success":true,"status":"created"}
因此,curl 请求正在运行。但是,jquery 请求返回 JSON.parse 错误。我不知道为什么。有人可以帮帮我,这有点令人沮丧。