在WordPress中的AJAX调用期间调试PHP对象

时间:2017-07-09 作者:Robin Andrews

我在使用WP插件时遇到了真正的问题,因为我似乎无法访问我的PHP数据来查看发生了什么。

如果我在PHP函数中添加了任何不喜欢的内容,插件将发出一个ajax调用,该调用将挂起(如下所示)。

而不是线路

do_action_ref_array( \'bookly_validate_custom_field\', array( $field, &$this->errors, $fields[ $field->id ] ) );

我试过了

$this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'bad\', \'bookly\' );

它可以工作,并在页面上显示一条错误消息“bad”(这与我想要的一样,尽管我想将其设置为有条件的)。

然而,如果我把var_dump($this) 在那里,ajax调用挂起。

而且echo \'<script>console.log("My")</script>\'; 我哪儿都没找到

最终,我想编写一个函数从外部连接到挂钩,但我需要在这里使用代码来解决如何做到这一点,因为我看不到发生了什么,所以我陷入了困境。

非常感谢您的帮助。

public function validateCustomFields( $value, $form_id, $cart_key )
    {
        $decoded_value = json_decode( $value );
        $fields = array();
        foreach ( json_decode( get_option( \'bookly_custom_fields\' ) ) as $field ) {
            $fields[ $field->id ] = $field;
        }

        foreach ( $decoded_value as $field ) {
            if ( isset( $fields[ $field->id ] ) ) {
                if ( ( $fields[ $field->id ]->type == \'captcha\' ) && ! Captcha\\Captcha::validate( $form_id, $field->value ) ) {
                    $this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'Incorrect code\', \'bookly\' );
                } elseif ( $fields[ $field->id ]->required && empty ( $field->value ) && $field->value != \'0\' ) {
                    $this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'Required\', \'bookly\' );
                } else {
                    /**
                     * Custom field validation for a third party,
                     * if the value is not valid then please add an error message like in the above example.
                     *
                     * @param \\stdClass
                     * @param ref array
                     * @param \\stdClass
                     */
                    do_action_ref_array( \'bookly_validate_custom_field\', array( $field, &$this->errors, $fields[ $field->id ] ) );
                }
            }
        }
    }

1 个回复
最合适的回答,由SO网友:dbeja 整理而成

如果要在该变量中查看对象,必须将其转换为字符串:

$data_str = print_r( $this, true );
然后,您可以将其包含在错误数组中,或者如果您只是在调试代码,则可以使用error\\u log将其发送到web服务器的错误日志文件:

error_log( $data_str );

结束

相关推荐

将JSON数据从WP查询传递到AJAX导致空错误

我当前正在使用WP_Query 这将在按下按钮时从AJAX调用触发。post元字段lat lng 将用作谷歌地图的位置数据。没有AJAX,查询输出很好,但似乎无法让它返回结果。我收到的回复-[{name: \"\", lng: null, lat: null}, {name: \"\", lng: null, lat: null}]现在,我认为错误在于在以下位置将结果转换为JSONjson_encode 阶段,但不太确定?任何帮助都会很好,对AJAX来说都是全新的!Function.php<?php