小编fib*_*ono的帖子

jQuery AJAX跨域

这是两个页面,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

javascript ajax jquery json cross-domain

468
推荐指数
10
解决办法
69万
查看次数

会话存储在Rails中的哪个位置?

在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的确切方式存在差距.

cookies session ruby-on-rails

9
推荐指数
1
解决办法
3707
查看次数

Rails“包含”方法并避免 N+1 查询

我对 Railsincludes方法的理解并不如我所愿,并且遇到了一个问题,希望能得到澄清。我有一个董事会模型has_many :membershas_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 查询方面更有效,那就太好了。谢谢!

ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
5409
查看次数

如何禁用“您所做的更改可能不会保存”。对话框(Chrome)?

已经回答了类似的问题(禁用“您所做的更改可能不会保存”弹出窗口),但不知何故,这对我来说仍然不起作用。

我正在尝试禁用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;在页面生命周期内的任何地方调用吗?也许我把它放错地方了?

javascript dom google-chrome

5
推荐指数
1
解决办法
1万
查看次数