You are not using the WordPress ajax API correctly, see Ajax in Plugins. Tha action parameter defines a function callback for wp_aja_*
action hook, not the name of a file:
<?php
add_action( 'wp_ajax_my_action', 'my_action_callback' );
//Uncomment next line if you want the ajax action enable in the frontend
//add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );
function my_action_callback() {
global $wpdb;
$name = $_POST['test'];
$city = $_POST['test1'];
$date = $_POST['test2'];
if ($date != '') {
$enddate = date("Y-m-t", strtotime($date));
$dates_sql = " AND start_date <= '$date' ";
}
if ($city != '' && $city != -1) {
$destination_sql = "AND venue="$city"";
}
if ($name != '' && $name != -1) {
$origincity_sql = "AND event_name="$name"";
}
$query = " SELECT * FROM <table name> WHERE event_id!='' " . $dates_sql . " " . $destination_sql . " " . $origincity_sql . " ORDER BY start_date DESC ";
$results = $wpdb->get_results($query) or die(mysql_error());
foreach ($results as $row) {
$message = "<tr><td align='center' id = 'username'>".$row->username."</td><td align='center' id = 'eventname'>".$row->event_name."</td><td align='center' id = 'venue'>". $row->venue."</td><td align='center' id = 'email'>".$row->email."</td><td align='center' id = 'misseddays'>".$row->missed_days."</td><td align='center' id = 'paymentstatus'>".$row->payment_mode."</td><td align='center' id = 'amountpaid'>".$row->amount_paid."</td><td align='center' id = 'amountbalance'>".$row->amount_balance."</td><td align='center' id = 'mailsent'>".=$row->mail."</td></tr>";
}
header('Content-Type: application/json');
echo json_encode($message);
exit;
}
?>
You may also take a look to wp_send_json, wp_send_json_error and wp_send_json_success.