2017-08-01 26 views
0

我試圖重新定向用戶後,他點擊一個按鈕。 但重定向不起作用。 這是我處理按鈕點擊的js代碼。yii2 ajax請求重定向不起作用

$('#MyButton').click(function() { 
    $.ajax({ 
    url: '<?php echo Url::to(['configurator/compare']) ?>', 
    type: 'POST', 
    data: { 
    Ref : Ref, 
    searchname: $("#searchname").val() , 
    searchby:$("#searchby").val() , 
    _csrf : '<?=Yii::$app->request->getCsrfToken()?>' 
    }, 
    success: function (data) { 
    } 
}); 

The http request image

請求被執行,但我不重定向到URL。 當我點擊按鈕時,我停留在同一頁面上。

+0

你實際上並沒有重定向雖然任何地方。它只是對給定的URL發出ajax POST請求。 – Andy

回答

0

您發佈的代碼不會執行重定向。

它所做的就是讓一個Ajax POST請求url:(「配置器/比較」),並在data:

參數傳遞到執行重定向你能做到這一點的success:回調,例如

success: function (data) { 
    window.location.href = 'http://google.com'; 
} 

您可以硬編碼的URL上面,或者將它基於腳本的輸出您所發佈的,這是可以通過訪問datasuccess回調裏面。

+0

但我能通過重定向訪問我的控制器中的發佈數據嗎? – user7888300

+0

我不認爲你理解ajax請求的流程。你的腳本發佈POST到''configurator/compare''。此時,您可以通過ajax訪問您發佈的數據(例如'searchname:','searchby:')。您可以從該腳本中返回任何可以在'success:'回調中讀取的內容。那時你可以做重定向或其他任何事情。但是你不能做一個PHP重定向,因爲請求是用ajax創建的,所以這是行不通的。 – Andy

1

如果你不希望任何數據返回給你「成功」的功能,比你的控制器「配置」,在方法「比較」,處理你的數據,你可以重定向到「查看」您想後:

$data = Yii::$app->request->post(); 
    // do what you want with data 
    return $this->redirect(['controller/action']); 
0
Try Below way. 

<script> 
$(document).ready(function(){ 
    $.ajaxSetup({ 
       headers: { 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
       } 
      }); 
    $.ajax({ 
      type:"POST", 
      data:{id:id}, 
      url : '<?php echo Yii::$app->getUrlManager()->createUrl("/property/favourite"); ?>', 
      success: function(response){ 
         window.location.href = '<?php echo Yii::$app->getUrlManager()->createUrl("/site/chat"); ?>';   
        } 
    }); 

}); 
</script>