Json 未定义的错误

Json undefined error

我要编辑然后发送 json 数据

<?php
    public function btneditAction() {
    $data['id'] = $this->request->getPost('id');
    $data['uname'] = $this->request->getPost('uname');
    $data['basesalary'] = $this->request->getPost('basesalary');
    $data['travelfee'] = $this->request->getPost('travelfee');
    $data['overtime'] = $this->request->getPost('overtime');
    $data['ssc_emp'] = $this->request->getPost('ssc_emp');
    $data['ssc_comp'] = $this->request->getPost('ssc_comp');
    $Salarydetail = new SalaryMaster();
    $pont=$Salarydetail->btnedit($data);
    echo json_encode($pont);
    $this->view->disable();
}
?>

网络上显示是这样的

{"valid":true} //when true {"valid":false}   //when false

我想要那个有效值,但是当我提醒时,它只显示未定义?

BtnEdit : function(val){
    var form=$('#edit_salary');
    $.ajax({
        type:'POST',
        data: form.serialize(),
        dataType:'json',
        url : "btnedit",
        success:function(d){
            alert(d.valid);      //undefined
            alert(d);            //{"valid":true}                     
        }
    });
}

使用JSON.parse转换对象中的字符串:

success:function(d){
    d = JSON.parse(d);
    alert(d.valid);      // true
}

您需要使用JSON.parse来转换对象中的字符串:

尝试

success:function(d){
    d = JSON.parse(d);
    alert(d.valid);
}

由于您正在使用 Phalcon 框架,我建议您使用它的 built-in 能力来正确处理 json 响应:

$this->response->setContentType('application/json', 'UTF-8');
$this->response->setJsonContent($responseAsArray);
$this->response->send();

如果 application/json 的 header 包含在响应中,jQuery 开始正确处理它,您不需要 JSON.parse 您的框架。

为了在我的一个应用程序中处理 API 模块中的 json 响应,我有一个 ControllerBase 扩展了 \Phalcon\Mvc\Controller 这个事件处理程序:

use \Phalcon\Mvc\Controller;

class ControllerBase extends Controller {

/**
 * Captures method result and tries to make a JSON response out of it.
 * 
 * @param \Phalcon\Mvc\Dispatcher $dispatcher
 * @return \Phalcon\Http\Response
 */
protected function afterExecuteRoute($dispatcher) {

    $content = $dispatcher->getReturnedValue();

    if(is_object($content)) {
        if(is_callable(array($content, 'toArray'))) {
            $content = $content->toArray();
        } else {
            $content = (array) $content;
        }
    }

    $frame = $this->getFrame($content, $dispatcher); // protocol frame creation helper

    $this->response->setContentType('application/json', 'UTF-8');
    switch($frame['code']) {
        case 200:
            $this->response->setStatusCode(200, 'OK');
            break;
        case 400: 
            $this->response->setStatusCode(404, 'Not found');
            break;
        case 500: 
            $this->response->setStatusCode(503, 'Service Unavailable');
            break;
    }

    // clearing potential warnings
    $ob = ob_get_clean();
    if(strlen($ob) > 0) {
        /**
         * @todo some logging of $ob !
         * this will be a dead code if you will make an Error2Exception handler
         */
        echo($ob); die();
    }

    // settinf response content as JSON
    $this->response->setJsonContent($frame);

    return $this->response->send();
}
}