2014-09-02 75 views
0

我正在由一個jQuery AJAX函數調用下面的PHP笨功能代碼:刷新頁面ajax的click事件之後笨

  $this->load->library('session'); 
      $this->load->helper('url'); 

       $ids = $_POST['i']; 
       $message = $_POST['m']; 
       var_dump($message); 
       var_dump($ids); 
       $sql = 'update replies set `response` = "'.$message.'" where id IN ('.implode(',', $ids).')'; 
       echo $sql; 
       R::exec($sql); // works normally to here 


       redirect($this->uri->uri_string()); 

我想「消息的DB插入後刷新頁面」。但似乎沒有發生。一切正常,包括數據庫插入。我究竟做錯了什麼?

+1

AJAX調用服務器上的資源,服務器處理響應並觸發重定向,AJAX不關心,除非你告訴它。如果你想這樣做,你應該從PHP返回URL並使用AJAX成功回調來重定向Javascript。或者在沒有AJAX的情況下正常發佈到PHP,並讓PHP執行重定向。 – 2014-09-02 21:58:16

+0

感謝Scrowler,「如果你想這樣做,你應該從PHP返回URL並使用AJAX成功回調來重定向Javascript。」我對jquery/js不太瞭解。你能否進一步解釋如何做到這一點? – user61629 2014-09-03 02:09:59

+1

以下面的例子,但是將「url」作爲參數放入回調函數中:'function(url){}',然後'location.href = url;',然後在PHP中,您只需'echo'http: //myurl.com';'。最後,一旦你已經完成了所有這些工作,用JS進行更多的錯誤檢查,以確保你恢復了你的預期。 – 2014-09-03 02:34:17

回答

1

您無法通過AJAX網址進行重定向。重定向可以使用回調函數在 三種方式完成,失敗並始終。

例子:

$.ajax({ 
     url: '/path/to/file', 
     type: 'default GET (Other values: POST)', 
     dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)', 
     data: {param1: 'value1'}, 
    }) 
    .done(function(url) { // echo url in "/path/to/file" url 
     // redirecting here if done 
     location.href = url; 
    }) 
    .fail(function(url) { // echo url in "/path/to/file" url 
     // redirecting here if failed 
     location.href = url; 
    }) 
    .always(function(url) { // echo url in "/path/to/file" url 
     // redirecting here always 
     location.href = url; 
    }); 
+0

我相信如果用戶想要使用重定向功能,位置所需的值將在響應頭(而不是主體)中。使用重定向進行響應可能會有一些優勢。 – jacob 2014-09-03 03:31:28

0

在你的Ajax的成功顯示出成功的消息

window.location="path_to redirect"; 

像例子中,我重定向到成員控制器

window.location="member"; 

希望這有助於以後使用。