这是我的代码: 这是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)));
}
}
答案 0 :(得分:1)
您应该从您的ajax提交控制器而不是模型。将您的路径多元化到
xmlHttp.open('POST','/ BrandDetails / returnPdetails',true);
send函数中传递的参数应为键和值
xmlHttp.send( “ID =” + ID);
您实际上并未向ajax响应的视图发送任何数据或字符串。在您的控制器中,至少在尝试操作您不确定的数据之前将测试字符串发送到视图,甚至将其发送到控制器。
function returnPdetails(){
$ id = $ this-> params ['named'] ['id'];
$ data = $ this-> BrandDetail-> findById($ id);
pr('一些文本来测试请求是否正常工作'); }
根据here
,不应将readystatechange函数大写xmlhttp.onreadystatechange
通过捕获xmlhttp.onreadystatechange函数中的错误来缩小问题范围。如果readyState为0,1,2或3,则放入语句。这将帮助您调试。