访问ajax请求中的错误块,即使响应是200 ok

时间:2013-05-27 15:00:36

标签: javascript ruby-on-rails json jquery

我正在从ajax做dross域请求。请求似乎没问题,并且它正在成功地引用数据库并返回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

2 个答案:

答案 0 :(得分:1)

由于浏览器不允许跨域服务器调用,我们可以通过将apache配置为与目标服务器交互的代理来实现此目的

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

示例:

    ProxyPass abc dot来了     ProxyPassReverse abc dot com

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

希望这会对你有所帮助。

答案 1 :(得分:0)

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

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