3

这是我的代码:这是一个 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)));
}
}
4

1 回答 1

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

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

  2. 在发送函数中传递的参数应该是键和值

    xmlHttp.send("id="+id);

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

    函数returnPdetails(){

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

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

    pr('一些文本来测试请求是否有效'); }

  4. readystatechange 函数不应根据此处大写

    xmlhttp.onreadystatechange

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

于 2012-12-03T09:00:38.500 回答