为什么我的新插件的响应不能保存?

时间:2015-11-01 01:38:40

标签: php jquery

以下是我的插件在提交调查时应该执行的一些操作。在我的控制台上,我应该得到保存的响应,但我绝对没有,甚至没有“无法保存回复”#39;我查看了代码,但我不明白为什么ajax没有执行保存响应的功能。其他人可以看到这里发生了什么吗?

// 5.3
// hint: ajax form handler for saving question responses expects: $_POST['survey_id'] and $_POST['response_id']
function ssp_ajax_save_response() {

    $result = array(
        'status'=>0,
        'message'=>'Could not save response.',
        'survey_complete'=>false
    );

    try {

        $survey_id = (isset($_POST['survey_id'])) ? (int)$_POST['survey_id']: 0;
        $response_id = (isset($_POST['response_id'])) ? (int)$_POST['response_id']: 0;

        $saved = ssp_save_response($survey_id, $response_id);

        if($saved) {

                $survey = get_post($survey_id);

            if(isset($survey->post_type) && $survey->post_type = 'ssp_survey') {

                    $complete = true;

                    $html = ssp_get_question_html($survey_id);

                    $result = array(
                        'status'=>1,
                        'message'=>'Response saved!',
                        'survey_complete'=>$complete,
                        'html'=>$html
                    );


            } else {

                    $result['message'].='Invalid survey.';
            }

        }

    } catch(Exception $e) {
        // php error
    }

    ssp_return_json($result);
}

// 5.4
// hint: saves single question response
function ssp_save_response($survey_id, $response_id) {

    global $wpdb;

    $return_value = false;

    try {

        $ip_address = ssp_get_client_ip();

        // get question post object
        $survey = get_post($survey_id);

        if($survey->post_type == 'ssp_survey'):

            // get current timestamp
            $now = new DateTime();
            $its = $now->format('Y-m-d H:i:s');

            // query sql
        $sql = "INSERT INTO {$wpdb->prefix}ssp_survey_responses (ip_address, survey_id, response_id, created_at) VALUES (%s, %d, %d, %s) ON DUPLICATE KEY UPDATE survey_id = %d";
        // prepare query
        $sql = $wpdb->prepare($sql, $ip_address, $survey_id, $response_id, $ts, $survey_id);
        // run query
        $entry_id = $wpdb->query($sql);

        // If response saved successfully...
        if($entry_id):

            // return true
            $return_value = true;

        endif;

    endif;

    } catch(Exception $e) {

        // php error
        ssp_debug('ssp_save_response php error', $e->getMessage());
    }

    return $return_value;

}

有人让我意识到我需要添加jQuery代码,所以在这里,并提前感谢你。

jQuery(document).ready(function($){

    // do something after jQuery has loaded

    ssp_debug('public js script loaded!');

    // hint: displays a message and data in the console debugger
    function ssp_debug(msg, data) {
        try {
            console.log(msg);
            if(typeof data !== "undefined") {
                console.log(data);
            }
        } catch(e) {

        }
    }

    // setup our wp ajax URL
    var wpajax_url = document.location.protocol + '//' + document.location.host + '/wp-admin/admin-ajax.php';

    // bind custom function to survey form submit event
    $(document).on('submit', 'ssp-survey-form', function(e){

        // prevent form from submitting normally
        e.preventDefault();

        $form = $(this);
        $survey = $form.closest('.ssp-survey');

        // get selected radio button
        $selected = $('input[name^="ssp_question_"]:checked', $form);

        // split field name into array
        var name_arr = $selected.attr('name').split('_');

        // get the survey id from the last item in name array
        var survey_id = name_arr[2];

        // get the response id from the value of the selected item
        var response_id = $selected.val();

        var data = {
            _wpnonce: $('[name="wp_nonce"]', $form).val(),
            _wp_http_referer: $('[name="wp_http_referer"]', $form).val(),
            survey_id: survey_id,
            response_id: response_id
        };

        ssp_debug('data', data);

        // get the closest dl.ssp-question element
        $dl = $selected.closest('dl.ssp-question');

        // submit the chosen item via ajax
        $.ajax({
            cache: false,
            method: 'post',
            url: wpajax_url + '?action=ssp_ajax_save_response',
            dataType: 'json',
            data: data,
            success: function(response) {
                // return response in console for debugging...
                ssp_debug(response);

                // If submission was successful...
                if(response.status) {
                    // update the html of the current li
                    $dl.replaceWith(response.html);
                    // hide survey content message
                    $('.ssp-survey-footer', $survey).hide();
                } else {
                    // If submission was unsuccessful...
                    // notify user
                    alert(response.message);
                }
            },
            error: function(jqXHR, textStatus, errorThrown) {
                // output error information for debugging...
                ssp_debug('error', jqXHR);
                ssp_debug('textStatus', textStatus);
                ssp_debug('errorThrown', errorThrown);
            }
        });

    });


});

0 个答案:

没有答案