Javascript 通过json到Ajax post将post转换回PHP

Javascript 通过json到Ajax post将post转换回PHP,javascript,php,ajax,wordpress,codeigniter,Javascript,Php,Ajax,Wordpress,Codeigniter,我正试图通过一个插件将Codeigniter应用程序集成到Wordpress中。当客户确认新约会的数据时,codeigniter程序此时难以控制 看法 控制器: if($this->input->post('submit2')) { $post_waiting = json_decode($_POST['post_waiting'], true); $waitinglist = $post_

我正试图通过一个插件将Codeigniter应用程序集成到Wordpress中。当客户确认新约会的数据时,codeigniter程序此时难以控制

看法

控制器:

        if($this->input->post('submit2'))
        {       
            $post_waiting = json_decode($_POST['post_waiting'], true);
            $waitinglist = $post_waiting['appointment'];

            $this->load->model('appointments_model');
            $this->appointments_model->waitinglist_to_db($waitinglist);
            $this->load->view('appointments/waiting_success');//return to book view
        } else {

        try {
            $post_data = json_decode($_POST['post_data'], true);
            $appointment = $post_data['appointment'];
            $customer = $post_data['customer'];

            if ($this->customers_model->exists($customer)) 
                    $customer['id'] = $this->customers_model->find_record_id($customer);

            $customer_id = $this->customers_model->add($customer);
            $appointment['id_users_customer'] = $customer_id; 

            $appointment['id'] = $this->appointments_model->add($appointment);
            $appointment['hash'] = $this->appointments_model->get_value('hash', $appointment['id']);

            $provider = $this->providers_model->get_row($appointment['id_users_provider']);
            $service = $this->services_model->get_row($appointment['id_services']);

            $company_settings = array( 
                'company_name'  => $this->settings_model->get_setting('company_name'),
                'company_link'  => $this->settings_model->get_setting('company_link'),
                'company_email' => $this->settings_model->get_setting('company_email')
            );

它返回Customers\u Model->exists(NULL),并表示未提供客户电子邮件。这完全是错误的,不会发生在框架之外。当应用程序在wordpress页面和快捷代码中运行时,我似乎无法回发。因此,我认为我需要做一篇Ajax文章。在这种情况下会是什么样子?需要对代码进行大手术吗?

在我进行这项工作的过程中,我一点一点地缩小了我的问题范围,并将解决方案发布在这里:

在我研究这个问题的过程中,我一点一点地缩小了问题的范围,并将解决方案发布在这里:

    $('#book-appointment-submit').click(function(event) {
        var formData = jQuery.parseJSON($('input[name="post_data"]').val());

        var postData = {
            'csrfToken': GlobalVariables.csrfToken,
            'id_users_provider': formData['appointment']['id_users_provider'],
            'id_services': formData['appointment']['id_services'],
            'start_datetime': formData['appointment']['start_datetime'],
        };

        if (GlobalVariables.manageMode) {
            postData.exclude_appointment_id = GlobalVariables.appointmentData.id;
        }

        var postUrl = GlobalVariables.baseUrl + '/index.php/appointments/ajax_check_datetime_availability';

        $.post(postUrl, postData, function(response) {
            ////////////////////////////////////////////////////////////////////////
            console.log('Check Date/Time Availability Post Response :', response);
            ////////////////////////////////////////////////////////////////////////

            if (response.exceptions) {
                response.exceptions = GeneralFunctions.parseExceptions(response.exceptions);
                GeneralFunctions.displayMessageBox('Unexpected Issues', 'Unfortunately '
                        + 'the check appointment time availability could not be completed. '
                        + 'The following issues occurred:');
                $('#message_box').append(GeneralFunctions.exceptionsToHtml(response.exceptions));
                return false;
            } 

            if (response === true) {
                $('#book-appointment-form').submit();
            } else {
                GeneralFunctions.displayMessageBox('Appointment Hour Taken', 'Unfortunately '
                        + 'the selected appointment hour is not available anymore. Please select '
                        + 'another hour.');
                FrontendBook.getAvailableHours($('#select-date').val());
                                alert('#select-date');
            }
        }, 'json');
    });
        if($this->input->post('submit2'))
        {       
            $post_waiting = json_decode($_POST['post_waiting'], true);
            $waitinglist = $post_waiting['appointment'];

            $this->load->model('appointments_model');
            $this->appointments_model->waitinglist_to_db($waitinglist);
            $this->load->view('appointments/waiting_success');//return to book view
        } else {

        try {
            $post_data = json_decode($_POST['post_data'], true);
            $appointment = $post_data['appointment'];
            $customer = $post_data['customer'];

            if ($this->customers_model->exists($customer)) 
                    $customer['id'] = $this->customers_model->find_record_id($customer);

            $customer_id = $this->customers_model->add($customer);
            $appointment['id_users_customer'] = $customer_id; 

            $appointment['id'] = $this->appointments_model->add($appointment);
            $appointment['hash'] = $this->appointments_model->get_value('hash', $appointment['id']);

            $provider = $this->providers_model->get_row($appointment['id_users_provider']);
            $service = $this->services_model->get_row($appointment['id_services']);

            $company_settings = array( 
                'company_name'  => $this->settings_model->get_setting('company_name'),
                'company_link'  => $this->settings_model->get_setting('company_link'),
                'company_email' => $this->settings_model->get_setting('company_email')
            );