How do I rebuild table data on submit?
Your code should work fine from what I see. You can print the $url value to see what really is passed to API. Please note that $form_state['storage']['Title'] will contain the key, not value - maybe that's the problem?

Plus, you don't need to use storage in this case. When using $form_state['rebuild'] you can just use $form_state to pass variables, like this:

function mymodule_form($form, &amp;$form_state) {
  $storage_val = isset($form_state['values']['title']) ? $form_state['values']['title'] : 'nothing stored yet';

  $form['message'] = array(
    '#markup' =&gt; t('Stored value: %storage_val', array('%storage_val' =&gt; $storage_val)),
  );

  $options = array(
    'opt1' =&gt; 'option1',
    'opt2' =&gt; 'option2',
    'opt3' =&gt; 'another option',
  );

  $form['title'] = array(
    '#title' =&gt; 'Select option',
    '#type' =&gt; 'select',
    '#options' =&gt; $options,
    '#default_value' =&gt; isset($form_state['values']['title']) ? $form_state['values']['title'] : '',
  );

  $form['submit'] = array(
    '#type' =&gt; 'submit',
    '#value' =&gt; t('Filter'),
  );

  return $form;
}

function mymodule_form_submit($form, &amp;$form_state) {
  $form_state['rebuild'] = TRUE;
}