2014-01-29 51 views
0

我想將ajax請求的結果發回到它所請求的同一頁面。下面是相互作用的部分:使用ajax回發到同一頁

AJAX jQuery中

var ids = 1 

$(document).ready(function(){ 
$('#showbtn').on('click', function() { 
    $.ajax({ 
     url: "http://localhost:3000/teamplayers.json", 
     data: {'resolution':ids}, 
     type:"post", 
     dataType: "json", 
     cache: true, 
     success:function(){ 
      $('#test3').val(1); 
      alert("test 3"); 
      }, 
     error: function(error) { 
        alert("Failed " + console.log(error) + " " + error) 
        }   
     }); 
    }); 
}); 

這應該是在這裏設置變量: Teamplayer控制器

# GET /teamplayers 
# GET /teamplayers.json 
def index 
    @teamplayers = Teamplayer.all 
    @fteams = Fteam.all 
    @teamplayer2 = 1 
    tid = params[:resolution] <-It should set here per the data section above 
    @ids = tid 
end 

不幸的是它調用的這一部分相同的控制器

# POST /teamplayers 
# POST /teamplayers.json 
def create 
    @teamplayer = Teamplayer.new(teamplayer_params) 

    respond_to do |format| 
    if @teamplayer.save 
     format.html { redirect_to @teamplayer, notice: 'Teamplayer was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @teamplayer } 
    else 
     format.html { render action: 'new' } 
     format.json { render json: @teamplayer.errors, status: :unprocessable_entity } 
    end 
    end 
end 

那麼我該怎麼做才能發佈到同一頁面。

回答

0

你是POST ing ajax,意思是create動作會被擊中,而不是index動作。當你點擊頁面時,你應該能夠在你的服務器日誌輸出中看到它。

如果你想命中index行動,你需要做一個GET ajax請求與分辨率數據集,這樣你就可以得到你想要的數據。

此外,如果它實際上是動態數據,您可能也許不想緩存此ajax請求,但它取決於您。從評論


編輯:

您需要將參數添加作爲查詢字符串爲GET,而不是一般的「數據」。

嘗試是這樣的:

$.ajax({ 
    url: "http://localhost:3000/teamplayers.json?resolution="+ids, 
    type:"GET", 
    dataType: "json", 
    success:function(){ 
     $('#test3').val(1); 
     alert("test 3"); 
     }, 
    error: function(error) { 
       alert("Failed " + console.log(error) + " " + error) 
       }   
    }); 
}); 

另一個編輯從評論:

# GET /teamplayers 
# GET /teamplayers.json 
def index 
    @teamplayers = Teamplayer.all 
    @fteams = Fteam.all 
    @teamplayer2 = 1 
    tid = params.fetch(:resolution) { 0 } # make sure we got something 
    @ids = tid.to_i      # coerce string param to integer 
end 
+0

但是當我做的GET,它在頁面的結束通話與數據頁。我想要這個:http:// localhost:3000/teamplayers /而不是:http:// localhost:3000/teamplayers/1 – user3240928

+0

@ user3240928更新的答案反映了這一點,但是您需要傳遞'resolution'作爲查詢字符串論據。 – mellowfish

+0

好吧,現在我知道它正在傳遞值,但是如何將值作爲整數 – user3240928

相關問題