Thanks for your prompt reply.
I actually got around this in the end by creating a separate .aspx page in the root of the project, and putting the WebMethod in the code behind of that page. This then enabled me to then make the standard ajax call through jQuery as usual, from my widget (ascx) embedded in the Sitefinity "Page"...
//hide all elements
//show success message
'Sorry, there was an error, please try again later'
I've burned through hours today trying to get this working, I'm not entirely happy with the result (I would prefer the web method in the code behind of the widget, moreover I don't really like the random .aspx dumped into the root). It will suffice for now..