2012-03-14 161 views
0

顯示獲取匹配的記錄,我要檢查,如果他/她的數據是使用電子郵件地址數據庫表。如果它在那裏,它應該獲取匹配記錄(姓名,地址,城市,州,郵政編碼)並將其顯示在表單中。如果電子郵件地址不在數據庫表中,應該允許用戶填寫表格的其餘部分。CakePHP的:使用電子郵件地址和當用戶輸入自己的電子郵件地址的形式

我使用CakePHP和MySQL這個項目。這可以使用AJAX完成嗎?做到以上的最好方法是什麼?

謝謝。

+0

我只是想知道,如果AJAX和CakePHP單獨suffient爲了這個目的? – vaanipala 2012-03-14 06:23:11

+0

是的,Ajax和cakephp就足夠了。下面我已經向你展示瞭如何(取決於你的蛋糕版本)。 – swiecki 2012-03-14 15:26:50

+0

好的,我將首先做一些AJAX修訂。我會試試看,讓你知道。 – vaanipala 2012-03-15 03:44:32

回答

1

最好的辦法確實使用AJAX。我綁定到電子郵件字段的類型事件定義一個函數,然後把它拿到你的控制器動作,如果有任何,則填補了這一數據到使用Javascript相應的字段專門返回用相應的數據JSON對象。

我在下面使用JQuery做到了這一點。

在你看來:

筆記:controller/action是應該在控制器中調用操作,也#emailbox被認爲是電子郵件形式的ID。 #otherbox是其他表單元素的id的佔位符。

<script type="text/javascript">           
    $(document).ready(function() {  
    $('input#emailbox').keyup(function() { 

     // could do other stuff here, like show load bar or clear old results 
     //run the ajax 
     getPage(); 
    }); 
}); 


function getPage() { 

    //generate the parameter for the php script 
    var data = {email: $("#emailbox").val()}; 
    $.ajax({ 
     url: '/controller/action', 
     type: 'GET',   
     data: data, 
     dataType: 'json',  
     cache: false, 
     success: function (data) { 

      //add the content retrieved from ajax into whatever forms you like 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
     }  
    }); 
}         
</script> 

需要注意的是Chrome瀏覽器開發工具可以幫助調試你要回來,你能弄清楚如何訪問相關數據每個字段的JSON對象。

在你的控制器:

public function searchForDetails() { 
     if($this->request->is('ajax')) { 
      $this->autoRender = false; 
//Get the email parameter data- this is one way to do it, you could also do it plenty of other ways 
$email = $this->request->query['email']; 
//Get user data- I have given an example of how to do so: 
$userdata = $this->User->find('first', array(
    'conditions' => array(
     'User.email' => $email, 
     'recursive' => -1)); 
return(json_encode($userdata)); 
      } 
    } 

這是你可以去它的一種方式。您所要做的工作是使用chrome調試JSON對象(使用命令shift j來訪問開發工具)並找出對象內部數組的佈局,以便設置各個表單的值。我還沒有測試過這種方法的效率,如果你正在開發Facebook,你可能不應該這樣做。

相關問題