OK, comments are not the easiest place to talk in details (too short, too easy to misinterpret) so I'll post this here. It may be a bit wide-ranging and high-concept at first b/c of the lack of detail I'm starting out with, but bear with me and we can edit out the parts that don't fit the more concrete scenario, as it gets defined, and flesh out the parts ...
What you should do is include &format=json in your URL. This tells Joomla that you want a JSON response rather than HTML, and it won't run (subsequently) your template to produce all your page HTML.
The usual approach is to call
in your controller code (ie in submit()). This will cause Joomla to look for a display() function in a ...
Looking at how Weblinks works I can see that the only time weblinks.go gets involved is when you have have an option selected to count Hits for each link causing view.html.php to display this style of link:
$item->link = JRoute::_('index.php?option=com_weblinks&task=weblink.go&id=' . $item->id);
at line 88 of default_items.php
I would ...
It doesn't look like you are including the menu Itemid in your redirect which is why your URL is changing. Add another hidden field with the value of your current Itemid. Your redirect code is fine just add the &Itemid= portion to include the value that you are passing.