WordPress函数,使通过AJAX请求发送的HTML安全

时间:2012-02-13 作者:Scott

在WordPress中,将HTML发送回AJAX请求的正确方法是什么?

我目前有:

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;
}
现在我正在使用json_encode() 但是我应该对HTML做些其他的事情吗?生成的HTML可以信任,因此无需进行剥离。

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

根据您期望的HTML类型,您可以使用不同的工具:

  • esc_html() 转义整个HTML块,这样就不会导致JSON对象文本中的字符中断
  • esc_html_e() 如果您关心该上下文中的本地化问题,请转义(如上所述)并翻译字符串
  • wp_kses() 将解析HTML字符串并去掉任何“邪恶”(明确禁止)标记

SO网友:mor7ifer

如果HTML是完全可信的,我想说不需要进行额外的处理,尽管理论上最好是将数据分部分发送,并使用JS DOM创建HTML。。。取决于每种方法的重量。。。我想,您是想要一个单独的、可能更重的、前端加载,而AJAX的带宽使用率更低,还是想要更轻的前端加载,而AJAX的多个负载更重。

SO网友:Mamaduka

您可以使用WordPress native-WP_Ajax_Response

结束

相关推荐

获取整个页面内容(在浏览器中生成的HTML)

我正在寻找一个过滤器,提供在WordPress中生成的完整页面,包括带有元标记、正文、样式和动态内容的标题部分。\\u content()和\\u extract()只对动态部分起作用,而请求过滤器似乎只对SQL查询起作用(或者不起作用)?我想在整个页面的所有链接或按钮中过滤一些数据。我该怎么做?