2014-09-25 153 views
0

我正在使用jQuery自動完成,並試圖讓它直接進入鏈接,當我點擊建議或按回車。下面是我使用的代碼:重定向不能在PHP中工作

 <script> 
     $(function() { 
     $("#search").autocomplete({ 
     source: 'search.php', 
     select: function(event, ui) { 
     $(this).val(ui.item.value); 
     $(this).parents("form").submit(); // this will submit the form. 
    } 
     }); 
     }); 
</script> 

然後,我有我的PHP代碼用於搜索:'

if ($_POST['search'] != null) { 
           //die("asdf: " . $_POST['search']); 
           $search = $_POST['search']; 
           $result = mysqli_query($con,"SELECT * FROM question WHERE text LIKE '%$search%'"); 
           while($row = mysqli_fetch_array($result)) { 
           $text = $row['text']; 
           $question_id = $row['question_id']; 
           //die($search . " " . $text); 
           if ($search == $text){ 
            header("Location: http://localhost/showstats.php?question_id=$question_id"); 
            die(); 
           } 
           echo "<br>"; 
           echo " <a href=\"showstats.php?question_id=" . $question_id; 
           echo "\">$text</a> "; 
           //echo "<br>"; 
          }} 

問題是,當我點擊的建議並不重定向到"showstats.php?question_id=$question_id",insted的給我空白結果頁面。 而當我插入die($search . " " . $text);裏面的if語句時,它顯示了我2次的文本,所以我知道它進入了它的聲明體。

+0

在'showstats.php'中添加錯誤報告。它會給你什麼訊息嗎? – 2014-09-25 15:26:02

+0

你永遠不會真正關閉你的'while(){'loop,所以你遇到了一個解析錯誤。或者你永遠不會關閉你的'if(){'語句,其中的一個是' – Ohgodwhy 2014-09-25 15:29:17

+0

',實際上它不會重定向它保留在stats.php(搜索的頁面)上,並且它不顯示任何結果。這就是它根本不重定向的問題... – user3362334 2014-09-25 15:30:27

回答

0

當你選擇一個建議,該事件發生在客戶端,以便這些代碼在你的PHP是不是真的有必要:

if ($search == $text) { 
    header("Location: http://localhost/showstats.php?question_id=$question_id"); 
    die(); 
} 

相反,當你選擇一個建議,嘗試從jQuery的觸發重定向:

<script> 
$(function() { 
    $("#search").autocomplete({ 
     source: 'search.php', 
     select: function(event, ui) { 
      // This will redirect you to whatever URL is in ui.item.value: 
      window.location = ui.item.value; 
     } 
    }); 
}); 
</script> 
+0

但ui.item.value的值是建議文本,而不是showstats.php?question_id = $ question_id。我嘗試輸入我的鏈接:window.location.href =「showstats.php?question_id = ui.item.value」;但是,邏輯上它返回建議文本,而不是我需要的question_id,因爲我讓search.php返回的文本不是question_id。那麼,我該怎麼做? – user3362334 2014-09-25 15:58:35

+0

我想通了。我需要在我的search.php中設置quesiton_id的值。謝謝。 – user3362334 2014-09-25 16:05:49

0

這是因爲您的頭文件已經發送,您已經開始輸出,因此重定向將不起作用。

嘗試緩衝您的輸出。

1

也值得逃避你的SQL ...

$搜索= $ _ POST [ '搜索'];
$ search = mysqli_real_escape_string($ search);
$ result = mysqli_query($ con,「SELECT * FROM question where text LIKE'%$ search%'」)or die(mysqli_error($ con));