Я пытаюсь отправить ответ с контроллером - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь отправить форму контролером.Все, что работает. Пост вставляется в базу данных. Но после успешной работы ajax или сообщения об ошибке не работает.Я думаю, что контроллер CakePHP не возвращает ответ. Вот мой ajax

submitHandler: function (form) {
                //alert("AAAAAAAAAAAAA"); 
                var formData = new FormData(form);
                $.ajax({url: "<?php echo $this->webroot;?>Agent/addprocess", type: "POST", dataType: "JSON", 
                    data: formData, async: false, contentType: false, processData: false, cache: false, beforeSend: function () {
                        $("#user_submit_button").html("Submit <i class=\"fa fa-spinner fa-spin fa-fw\" aria-hidden=\"true\"></i>");
                    }, success: function (jsonStr) {
                        //alert(jsonStr.message)
                       $(".footer-msg-box").html(jsonStr.message);
                       $("#user_submit_button").html("Submit");
                }});
                return false;
            }            
        });

А вот мой контроллер

 public function addprocess() {
          $postData = $this->request->is('post');
          // var_dump($this->request->data)
                     $this->request->data['User']['email'] = $this->request->data['User']['email'];
                     $email = $this->request->data['User']['email'];
                     $this->request->data['User']['dob'] = date('Y-m-d',strtotime($this->request->data['User']['dob']));
            $result='';
            $array='';
            $ch=curl_init();
            curl_setopt($ch,CURLOPT_URL,$url);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
            curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,50);
            $result=curl_exec($ch);
            curl_close($ch); 
            $array=json_decode($result,TRUE);
            $allData = '';
            if($result != '' && is_array($array))
            {
                if(count($array)>5 && $array['status'] == 1)
                {

                //echo 'Hello';
                    if($array['otp_status']==1)
                    {
                    //echo 'Hello12';
                    $res=$array['trans_id'];
                    $this->request->data['User']['trans_id'] = $res;
                    $agent_msisdn = $array['agent_msisdn'];
                    $this->request->data['User']['trans_id'] =$agent_msisdn;

                    //$agent_msisdn = $array['msisdn'];
                    $allData .= '<div style="border:1px solid green;margin:20px;padding:25px;"><p style="color:red;">'.$array['remarks'].'</p>
                    <input name="transid" id="transid" type="hidden" value="'.htmlspecialchars($res).'"/>
                    <input name="agent_msisdn" id="agent_msisdn" type="hidden" value="'.htmlspecialchars($agent_msisdn).'">';
                    //$allData .= '<tr>';
                    //$allData .= '<td>Trans ID</td>';
                    //$allData .= '<td><input name="transid"id="transid"type="hidden"disabled value="'.htmlspecialchars($res).'"></td>';
                    $allData .= 'OTP &nbsp; <input name="otp" style="padding:6px;border:1px solid #cccccc;" placeholder="Enter OTP" id="otp_mobile" type="text" maxlength="6">';
                    //$allData .= '<td>';
                    $allData .= '<button type="button" class="signupbtn btn btn-info" style="width:100px;" onclick="received_otp()">OTP Send</button> <div id="otp_registration"></div></div>';
                    //$allData .= '</tr>';

                            $this->User->save($this->request->data);  


                    }
                     else
                    {
                    $allData .= "<p style='color:red'>No Response or Error.</p>";
                    }
                }
                else
                {
                    if(isset($array['message']))
                    $allData .= "<p style='color:red'>".$array['message']."</p>";
                }
            }
            $allData .=  '</table>';
            // $this->response->body(json_encode(
            //         array('status' => 'ERROR', 'message' => 'Unauthorized')));
            //     $this->response->send();
            //     $this->_stop();
            $All['message'] = $allData;
            echo json_encode($All, true);  

}
}
}

echo json_encode ($ All, true);Пытаюсь отправить ответ json, но он не работает. Любая помощь будет благодарна за меня

1 Ответ

0 голосов
/ 10 февраля 2019

Я думаю, вы можете попробовать этот кусок кода.Код был написан на торте 3.4.Вполне возможно, что что-то нужно будет изменить в вашей версии.

/**
 *  @method GET
 *  @return string JSON
 */
public function addProcess() {

    $this 
        ->viewBuilder()
        ->setLayout('ajax');

    $data = ['foo' => 'bar'];

    return $this
        ->response
        ->withStringBody(json_encode($data));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...