gpt4 book ai didi

ruby-on-rails - Rails Devise Ajax 调用

转载 作者:行者123 更新时间:2023-12-01 11:03:44 24 4
gpt4 key购买 nike

我需要通过 ajax 调用处理登录设计。现在我有一个用简单表单构建的设计登录,设计的存在完全适用于服务器端。客户端是完全独立于 ruby​​ 构建的。客户端人员需要知道如何使用正确的参数通过 AJAX 发送信息以处理登录和登录。

编辑

我的 application.js 看起来像这样

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
$(function(){
$.ajaxSetup({
beforeSend: function( xhr ) {
var token = $('meta[name="csrf-token"]').attr('content');
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
}
});
});

这是我的发帖请求

function signIn(email, password){

var data = {user: {email: email, password: password}};
$.ajax({
url: 'http://localhost:3000/users/sign_in.json',
type: 'POST',
dataType: 'json',
data: data,
success: function(data, textStatus, xhr) {
alert('success');
alert(data); //to see what kind of outputs these have
alert(textStatus);
alert(xhr);

//called when successful
}
});
}

这在我的 Rails 控制台中给出了这个

Started POST "/users/sign_in.json" for 127.0.0.1 at 2011-12-08 12:30:06 -0500
Processing by SessionsController#create as JSON
Parameters: {"user"=>{"email"=>"someone@hotmail.com", "password"=>"[FILTERED]"}}
WARNING: Can't verify CSRF token authenticity
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."email" = 'someone@hotmail.com' LIMIT 1
(0.3ms) UPDATE "users" SET "last_sign_in_at" = '2011-12-08 17:29:23.030686', "current_sign_in_at" = '2011-12-08 17:30:07.069479', "sign_in_count" = 11, "updated_at" = '2011-12-08 17:30:07.069864' WHERE "users"."id" = 16
Completed 201 Created in 144ms (Views: 2.1ms | ActiveRecord: 0.0ms)

在我的浏览器中,当我检查元素并转到我得到的控制台时

XMLHttpRequest cannot load http://localhost:3000/users/sign_in.json. Origin null is not allowed by Access-Control-Allow-Origin.

而且我的所有提醒都没有显示。

我需要改变什么

最佳答案

默认情况下,您应该编写如下代码:

首先在您的 application.js 中设置 CSRF token :

$(function(){
$.ajaxSetup({
beforeSend: function( xhr ) {
var token = $('meta[name="csrf-token"]').attr('content');
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
}
});
});

其次发布您的登录信息:

$.ajax({
url: '/users/sign_in.json',
type: 'POST',
dataType: 'json',
data: {user: {email: 'email@example.com', password: 'password'}},
success: function(data, textStatus, xhr) {
//called when successful
}
});

关于ruby-on-rails - Rails Devise Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com