1

我正在做来自 ajax 的渣滓域请求。请求似乎没问题,它成功地访问数据库并返回 200 ok 响应,但在客户端它仍然处于失败块中。这是我的代码。

validate($(".confpassword").val(),$("#psw").val());
    var firstname = $("#firstname").val();
    var lastname = $("#lastname").val();
    var email = $("#email").val();
    var password = $("#psw").val();
    var birthday = $("#birthday").val();

    var sendInfo = {
        firstname: firstname,
        lastname: lastname,
        email: email,
        password: password,
        birthday: birthday
    };
    $.ajax({
        type: 'POST',
        url: 'http://localhost:3001/users/create',
        data: JSON.sendInfo,
        crossDomain: true,
        dataType: 'application/json; charset=utf-8',

        success: function (data) {
                alert('success.............');
        },
        error: function(){
             alert('failure............');
        }
    });

如果有人知道请帮助我

这是我在 ruby​​ 中的服务器端响应:

def create
  @user=User.create(:birthday=> params[:birthday],:email=> params[:email],:firstname=> params[:firstname], :lastname=> params[:lastname],:password=>params[:password])
  respond_to do |format|
    if @user.save
      format.json { render :json => @user,:status=>200}
    else
      format.json { render :json => @user.errors, :status => :unprocessable_entity}
    end
  end
end
4

2 回答 2

1

由于浏览器不允许跨域服务器调用,我们可以通过将 apache 配置为代理来与目标服务器交互来做到这一点

这是解决方案。在本地 apache 服务器的 http.conf 文件中添加“Location”标签。然后您的服务器将充当代理并将您的呼叫重定向到目标服务器。

例子:

ProxyPass abc dot come ProxyPassReverse abc dot com

所有对 <> 的调用都将重定向到 abc dot com

希望这对您有所帮助。

于 2013-05-27T19:25:56.973 回答
0

不确定 JSON.sendInfo 是如何工作的,但在 JSONP 中,您需要从 url 返回一个回调并将其传递回响应中,如下所示:

format.jsonp { render json: results, callback: params[:callback]}

于 2013-05-27T15:18:17.037 回答