2012-08-06 96 views
0

我正在使用ajax進行小型表單驗證。用戶提供一個密鑰,當表單提交時,我調用一個ajax方法validate_key。Ajax調用的響應

我的功能是

function validate_key(){ 
    $key = $_POST['key']; 
    $id = $this->uri->segment(3); 
    $query = $this->db->get_where('mc_boxes', array('idmc_boxes' => $id)); 
    $row = $query->row(); 
    $download_key = strtolower($row->downloadkey); 
    if($download_key == $key){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

jQuery是

$(document).ready(function() { 
    $('#submit').click(function() { 
     var key = $('#downloadkey').val(); 
     var dataString = {KEY:key}; 
     $.ajax({ 
      url: "/index.php/home/validate_key", 
      type: 'POST', 
      data: dataString, 
      success: function(msg) { 
      } 
     }); 
     return false; 
    }); 
}); 

和形式爲

<form name="form" method="post"> 
    <input id="downloadkey" name="downloadkey" type="text" /> 
    <input type="submit" id="submit" name="submit" value="submit"/> 
</form> 

我檢查提供關鍵數據庫的用戶,如果關鍵是正確允許用戶查看頁面並在會話中設置密鑰(如果它是錯誤的)給出警報消息並再次呈現表單

如何檢查響應?

感謝

+2

你的問題是什麼?您在成功功能中檢查AJAX響應。 – Utkanos 2012-08-06 13:55:39

+0

@Utkanos是的,它給了我一些我的wamp服務器索引頁的html – 2012-08-06 13:57:01

+0

閱讀你的框架如何處理AJAX請求的文檔。你可能做錯了。使用fuelphp時,我必須設置一個單獨的REST API來處理ajax,所以也許它與codeigniter一樣。 – Matt 2012-08-06 13:57:37

回答

3

我猜你需要在阿賈克斯成功處理程序,您可以檢查在回調響應呼應從PHP頁面

if($download_key == $key){ 
     echo "true"; 
    } 
    else{ 
     echo "false"; 
    } 

然後。請確保您通過調用preventDefault()函數來防止默認操作,以避免發佈頁面。

$(document).ready(function() { 
    $('#submit').click(function(e) { 
     e.preventDefault(); 
     var key = $('#downloadkey').val(); 
     var dataString = {KEY:key}; 
     $.ajax({ 
      url: "/index.php/home/validate_key", 
      type: 'POST', 
      data: dataString, 
      success: function(msg) { 
        if(msg=="true") 
        { 
         alert("do something") 
        } 
        else 
        { 
         alert("do something else") 
        }       

      } 
     });   
    }); 
}); 
+0

echo不起作用 – 2012-08-06 14:02:08

+0

當我提交表單時看到我的迴應它顯示了一些HTML和CSS我無法看到任何真實或錯誤在我的迴應# – 2012-08-06 14:07:56

+0

使用firebuug來查看你打電話給哪個文件。 – Shyju 2012-08-06 14:20:06

0

您需要輸出內容到頁面。如果你只是return truereturn false什麼都不會輸出。

所以做這樣的事情:

echo "OK"

然後你就可以在你的JavaScript做到這一點:

if(msg == "OK"){ .. }

你可以做的另一件事是例如返回一個HTTP狀態代碼

header("HTTP/1.1 200 OK");

你可以在你的jQuery檢查。然而,使用第一種方法更有用,因爲您可以在頁面上輸出任意數量的輸出,包括不同的錯誤消息等。

+0

回聲不工作 – 2012-08-06 14:01:50

+0

當我提交表單,看看我的反應也顯示了一些HTML和CSS我不能看到任何東西真的還是假的,我響應 – 2012-08-06 14:09:07

+0

一開始你」重新使用codeigniter - 你應該使用'$ this-> input-> post('KEY')'而不是'$ _POST ['KEY']''。你也沒有一個URI段3.可以從這個破壞它嗎?什麼是你看到的HTML輸出? – 2012-08-06 14:14:35