这是两个页面,test.php和testserver.php.
test.php的
<script src="scripts/jq.js" type="text/javascript"></script>
<script>
$(function() {
$.ajax({url:"testserver.php",
success:function() {
alert("Success");
},
error:function() {
alert("Error");
},
dataType:"json",
type:"get"
}
)})
</script>
Run Code Online (Sandbox Code Playgroud)
testserver.php
<?php
$arr = array("element1",
"element2",
array("element31","element32"));
$arr['name'] = "response";
echo json_encode($arr);
?>
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:当这两个文件都在同一台服务器(localhost或web服务器)上时,它可以工作并被alert("Success")调用; 如果它位于不同的服务器上,意味着Web服务器上的testserver.php和localhost上的test.php,它就无法工作,并且alert("Error")正在执行.即使ajax中的URL更改为http://domain.com/path/to/file/testserver.php
在Rails中,我已经为用户身份验证实现了以下代码(确认是正确的).但是,我想确认一下这个奇怪的想法session[:session_token].这是存储在浏览器中的"cookie"吗?
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :current_user, :signed_in?
private
def current_user
@current_user ||= User.find_by_session_token(session[:session_token])
end
def signed_in?
!!current_user
end
def sign_in(user)
@current_user = user
session[:session_token] = user.reset_token!
end
def sign_out
current_user.try(:reset_token!)
session[:session_token] = nil
end
def require_signed_in!
redirect_to new_session_url unless signed_in?
end
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,我对其工作原理的理解是,每当浏览器/客户端向rails发送请求时,cookie(带有session[:session_token])也会被发送,从而允许该current_user方法找到用户.我的理解是否正确?这对我来说很奇怪,因为当我们在ApplicationController(Rails-side)中声明它时,浏览器/客户端访问会话cookie的确切方式存在差距.
我对 Railsincludes方法的理解并不如我所愿,并且遇到了一个问题,希望能得到澄清。我有一个董事会模型has_many :members(has_many :lists和一个列表has_many :cards)。在下面的板控制器中,该show方法如下所示:
def show
@board = Board.includes(:members, lists: :cards).find(params[:id])
...
end
Run Code Online (Sandbox Code Playgroud)
为什么includes这里需要这个方法呢?为什么我们不能直接使用@board = Board.find(params[:id])然后通过@board.members和访问成员和列表@board.lists?我想我并没有真正明白为什么我们需要预取。如果有人能详细说明为什么这在 SQL 查询方面更有效,那就太好了。谢谢!
已经回答了类似的问题(禁用“您所做的更改可能不会保存”弹出窗口),但不知何故,这对我来说仍然不起作用。
我正在尝试禁用Changes you made may not be saved.表单输入更改的对话框。我知道 Chrome 已经删除了自定义消息功能,但我很难完全禁用该框。我在一些 HTML 代码的底部有以下 javascript:
window.onbeforeunload = function() {
};
window.onbeforeunload = null;
Run Code Online (Sandbox Code Playgroud)
两者都不适合我。当我window.onbeforeunload在检查器控制台中输入内容时,我得到一个null返回值。可以window.onbeforeunload = null;在页面生命周期内的任何地方调用吗?也许我把它放错地方了?