使用CakePHP ajax视图验证ajax请求时,返回的所有字段始终无效,而不是正确的字段

使用CakePHP ajax视图验证ajax请求时,返回的所有字段始终无效,而不是正确的字段,php,ajax,cakephp,cakephp-2.0,Php,Ajax,Cakephp,Cakephp 2.0,我不知道为什么我总是收到所有的错误,而不仅仅是无效的字段,即使我正确地填写了一些必填字段 提交资料控制员: public function submit() { $this->set('title_for_layout', 'Submit - '); if ($this->request->is('ajax')) { if (!empty($this->request->data)) { $this->

我不知道为什么我总是收到所有的错误,而不仅仅是无效的字段,即使我正确地填写了一些必填字段

提交资料控制员:

public function submit() {
    $this->set('title_for_layout', 'Submit - ');

    if ($this->request->is('ajax')) {
        if (!empty($this->request->data)) {
            $this->Submission->set($this->request->data);
            if ($this->Submission->invalidFields($this->request->data)) {
                $formErrors = $this->Submission->validationErrors;
            } else {
                $formErrors = null;
            }
        } else {
            $formErrors = null;
        }

        $this->set(compact('formErrors'));
}

/Submissions/json/submit.ctp:

<?php

$toReturn = array(
    'formErrors' => $formErrors
);

echo json_encode($toReturn);
正在序列化和发送的表单值:

json响应中出现的错误:


把头发从这里拔出来:|

你似乎把validates()和invalidFields()弄得有点乱

invalidFields()在验证()后返回无效字段,请参阅:

因此,您的代码应该如下所示:

$this->Submission->set($this->request->data);
if (!$this->Submission->validates()) {
    $formErrors = $this->Submission->invalidFields();
} else {
    $formErrors = null;
}

您似乎对validates()和invalidFields()有点糊涂

invalidFields()在验证()后返回无效字段,请参阅:

因此,您的代码应该如下所示:

$this->Submission->set($this->request->data);
if (!$this->Submission->validates()) {
    $formErrors = $this->Submission->invalidFields();
} else {
    $formErrors = null;
}

首先,将数据设置为模型:

$this->ModelName->set($this->request->data);
然后,要检查数据是否有效,请使用模型的validates方法,如果数据有效,则返回true;如果数据无效,则返回false:

if ($this->ModelName->validates()) {
    // it validated logic
} else {
    // didn't validate logic
    $errors = $this->ModelName->validationErrors;
}

首先,将数据设置为模型:

$this->ModelName->set($this->request->data);
然后,要检查数据是否有效,请使用模型的validates方法,如果数据有效,则返回true;如果数据无效,则返回false:

if ($this->ModelName->validates()) {
    // it validated logic
} else {
    // didn't validate logic
    $errors = $this->ModelName->validationErrors;
}

如果没有ajax,你能试着这样做吗?如果没有ajax,你能试着这样做吗?如果没有ajax,会是同样的错误吗?出于某种原因,现在每个字段都会给我两个错误,但仍然给我同样的问题:\n出于某种原因,现在每个字段都会给我两个错误,并且仍然给我同样的问题:\