función de WordPress que hace que HTML sea seguro para ser enviado a través de una solicitud AJAX

4

¿Cuál es la forma correcta de enviar HTML de nuevo a una solicitud AJAX en WordPress?

Actualmente tengo esto:

add_action( 'wp_ajax_nopriv_get-location-info', 'sc_locations_get_location_info' );
add_action( 'wp_ajax_get-location-info', 'sc_locations_get_location_info' );
function sc_locations_get_location_info() {
    $nonce = $_POST['nonce'];
    if ( ! wp_verify_nonce( $nonce, 'get-location-info-nonce' ) ) {
        $response = json_encode( array( 'success' => false, 'error' => "Failed nonce check" ) );
    } else {
        $response = json_encode( array( 'success' => true, 'HTML' => '...LOTS OF WONDERFUL HTML...' ) );
    }
    header( "Content-Type: application/json" );
    echo $response;
    exit;
}

Ahora solo estoy usando json_encode() pero ¿debería hacer algo más al HTML? Se puede confiar en el HTML generado, por lo que no será necesario realizar una eliminación.

    
pregunta Brady 13.02.2012 - 17:49

3 respuestas

6

Según el tipo de HTML que está esperando, hay diferentes herramientas que puede usar:

  • esc_html() escapa de bloques HTML completos para que no termines con caracteres de ruptura en tus literales de objetos JSON.
  • esc_html_e() se escapa (como arriba) y traduce la cadena si le preocupa la localización en ese contexto.
  • wp_kses() analizará la cadena HTML y eliminará cualquier etiqueta "malvada" (explícitamente rechazada).
respondido por el EAMann 13.02.2012 - 18:52
0

Si el HTML es de plena confianza, diría que no es necesario realizar ningún procesamiento adicional, aunque en teoría podría ser mejor enviar los datos en partes y usar JS DOM para crear su HTML ... depende del peso de cada forma de hacerlo ... y supongo que si desea una carga única, probablemente más pesada, por adelantado con un uso más reducido del ancho de banda del AJAX o si desea una carga más ligera por delante con varias cargas más pesadas del AJAX.

    
respondido por el mor7ifer 13.02.2012 - 18:10
0

Puedes usar WordPress nativo - WP_Ajax_Response

    
respondido por el Mamaduka 13.02.2012 - 19:36

Lea otras preguntas en las etiquetas