Ajax无法检索数据(CAKEPHP)

时间:2012-12-01 18:30:21

标签: ajax cakephp

这是我的代码: 这是javascript文件,它从视图中发送获取所选元素,并将该id作为Ajax请求发送到控制器。

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)));
}
}

1 个答案:

答案 0 :(得分:1)

  1. 您应该从您的ajax提交控制器而不是模型。将您的路径多元化到

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

  2. send函数中传递的参数应为键和值

    xmlHttp.send( “ID =” + ID);

  3. 您实际上并未向ajax响应的视图发送任何数据或字符串。在您的控制器中,至少在尝试操作您不确定的数据之前将测试字符串发送到视图,甚至将其发送到控制器。

    function returnPdetails(){

    $ id = $ this-> params ['named'] ['id'];

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

    pr('一些文本来测试请求是否正常工作'); }

  4. 根据here

    ,不应将readystatechange函数大写

    xmlhttp.onreadystatechange

  5. 通过捕获xmlhttp.onreadystatechange函数中的错误来缩小问题范围。如果readyState为0,1,2或3,则放入语句。这将帮助您调试。