2012-12-01 56 views
3

這裏是我的代碼: 這是一個javascript文件,它從視圖中獲取所選元素,並將該id作爲Ajax請求發送給控制器。Ajax無法檢索數據(CAKEPHP)

function getData (id, e) { 

    if(window.XMLHttpRequest) { 

     xmlHttp = new XMLHttpRequest(); 
    } 
    else { 

     xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 

    xmlHttp.onreadystatechange = function() { 

     if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { 

      alert('yes'); 
     }else{ 

      alert('no'); 
     } 
    } 

    xmlHttp.open('POST', '/BrandDetail/returnPdetails', true); 
    xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    xmlHttp.send(id); 
    e.preventDefault(); 

} 
}); 

現在這裏的控制器沒有得到請求或響應它。

class BrandDetailController extends AppController { 

public $name = 'BrandDetail'; 

function returnPdetails() { 

    $id = $_POST['id']; 
    $data = $this->brandDetail->find('all', array('conditions' => array('brandDetail.id' => $id))); 
} 
} 
+0

1)不包括所有多餘的CSS代碼,2)你的實際問題是什麼3)是否有某種錯誤 - 發生了什麼,什麼是不...等等 – Dave

回答

1
  1. 你應該打電話從阿賈克斯控制器提交不是模型。多行你的路徑

    xmlHttp.open('POST','/ BrandDetails/returnPdetails',true);

  2. 被傳遞的參數在發送功能應該是鍵和值

    xmlHttp.send( 「ID =」 + ID);

  3. 實際上,您並未將任何數據或字符串發送到您的ajax響應的視圖。在您的控制器中,至少要向視圖發送一個測試字符串,然後才能嘗試處理您不確定的數據,甚至將其傳送到控制器。

    功能returnPdetails(){

    $ ID = $這個 - > PARAMS [ '命名的'] [ 'ID'];

    $ data = $ this-> BrandDetail-> findById($ id);

    pr('有些文本來測試請求是否正常工作'); }

  4. 的readystatechange功能不應該根據here

    xmlhttp.onreadystatechange

  5. 通過在xmlhttp.onreadystatechange功能捕捉錯誤精確您的問題予以資本化。如果readyState爲0,1,2或3,則放入語句。這將幫助您調試。