2013-05-27 37 views
1

我正在從ajax做渣滓域請求。該請求似乎是確定的,它正在成功地數據庫並返回200 OK響應,但在客戶端仍然是在失敗塊。 這是我的代碼。訪問ajax請求中的錯誤塊,即使響應是200好

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............'); 
     } 
    }); 

如果有人知道請幫我

這是我的紅寶石服務器端的響應:

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 

回答

0

不知道JSON.sendInfo是如何工作的,但在JSONP你需要返回一個回調從url中傳遞回來,如下所示:

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

+0

但我們不能使用jsonp和post請求。我已經嘗試過 – Gaurav24

1

由於瀏覽器不允許跨域服務器調用,我們可以通過配置apache作爲與目標服務器交互的代理來實現。

以下是解決方案。 在本地apache服務器的http.conf文件中添加一個「Location」標籤。然後,您的服務器將充當代理並將您的呼叫重定向到目標服務器。

例子:

的ProxyPass ABC點來 ProxyPassReverse ABC科網

到<所有來電>將被重定向到ABC科網

希望這將是有益的給你。

+0

ProxyPass abc.com ProxyPassReverse abc.com

+1

但我使用rails(webrick)服務 – Gaurav24