How to avoid wp-load.php within a PHP/CSS file?

Here is a basic setup that I use for AJAX with WordPress. instead of loading wp-load.php; just use WordPress default method for AJAX calls. This allows you to also filter function calls from Javascript through a switch. I also added a quick example for wp_localize_script.

<?php

add_action('wp_enqueue_scripts', 'YOUR_NAME_scripts'); //back end

function YOUR_NAME_scripts( $hook_suffix ) {

            wp_enqueue_script('YOUR_NAME-js');

            global $blog_id;
            $params = array(
                'site_url' => site_url(),
                'admin_ajax_url' => site_url() . '/wp-admin/admin-ajax.php'
            );

            wp_localize_script( 'jquery', 'YOUR_NAME', $params );

}

add_action('wp_ajax_nopriv_YOUR_NAME_ajax', 'YOUR_NAME_ajax_function');
add_action('wp_ajax_YOUR_NAME_ajax', 'YOUR_NAME_ajax_function');
function YOUR_NAME_ajax_function(){

    fobu_load_classes();

    switch($_REQUEST['fn']):
        case 'test_ajax':
            $output = $_REQUEST['data'];
        break;


        default:
            $output="No function specified, check your jQuery.ajax() call";
        break;
    endswitch;

    ob_clean();
    $output=json_encode($output);
    if(  is_array( $output )  ):

        print_r( $output );
    else:

        echo $output;
    endif;
    die();

}





?>

<script>
//in YOUR_NAME.js or whatever
jQuery(document).ready(function() { 
    (function ($) { 

                jQuery.ajax({
                    url: YOUR_NAME.admin_ajax_url,
                    dataType: 'json',
                    //type:'POST',
                    data: {
                       'action':'YOUR_NAME_ajax',
                       'fn': 'test_ajax',
                       'data': data
                       },
                    success: function(results){
                        //console.log(results);
                        if( results ){

                        }

                    },// end of success
                    error: function(errorThrown){console.log(errorThrown);}
                });// end of ajax   

    })(jQuery);
});

</script>

tech