There are other ways to POST with normal links like for instance the way ASP.NET LinkButtons works, and the way we’re using them in Ra-Ajax (see; http://ra-ajax.org/samples/RSS-Sample.aspx – which are using POSTs for anchor elements ) and also there are way better ways to exploit the BUTTON element then styling them as links (see; http://ra-ajax.org/samples/CRM-Sample.aspx – which uses left, right and center elements to create “stylable buttons”)
.
When that’s said I’d like to say that in general terms I agree with MorganRoderick. Also on the book recommendation, all though for experienced web-developers it’s a bit too noobish … still great book anyway :)

One good reason I could think of is having a “Next” button and a “Previous” link (which is also a button). The Previous button will still have to submit data via POST, but depending on the application it might be necessary to visually de-emphasize it.

I am doing something similar with instead of . I need to see if some of the author’s styles will work better than mine with sizing. Internet Explorer 5, 6 and 7 really like to screw up the width of any submit button, styled like a link or not. If it works I like the author’s solution to this better than mine as mine relies on IE conditional styles, which AFAIK can’t appear in a .css file but must appear in a section of the page, which, like most things IE, sucks. And of course, IE8 appears to fix the problem, but my hack broke IE8 until I revised the conditional style.

This is a horrible idea. My apologies if I’m a bit direct here; but why would anyone even want to style buttons as links? It confuses people: compared to a real link, it no longer shows the url, it doesn’t react to middle-button clicking, ctrl+clicking or the other usual methods of opening the link in a new tab or window or dragging it to copy the url, among other things. Of course, those options don’t do anything because it’s a button, but the user doesn’t know that. All he/she knows is that something’s wrong. If you really have to POST something, make it a button.

Come on now. Don’t you think that is a little over the top? Getting involved in a land war in Asia is a horrible idea. Styling buttons as links is a nifty hack, and really only intended for a narrow use case. Like having a delete link for a list of items in a shopping cart, as Natalie demonstrated. I’d rather have that than a bunch of blocky submit buttons all crammed together. And I don’t think users will be expecting to open such a link in a new tab, or copying the URL, etc.

All in all, I think it is quite clever and addresses the need to maintain idempotency of delete actions.

People are really getting hung up on GET / POST and impotence. While you can use this technique to make a UI that violates those conventions, there are plenty of use cases that don’t. For example, there are practical limitations to GET URLs that don’t exist for POST, like URL length limits. In my case, I have a form that is wrapped around of table, and each row of the table will fire off a seperate report. The form has some top-level controls, such as output format. Buttons look ugly and don’t convey the right meaning in that context. Buttons that look like links do, and the fact that it’s underlined and blue conveys to the user that it does something.

Now for delete links, or other things that would otherwise violate impotence convention. Go ahead and make it a link, a real link, or a button that looks like one. If its going to do something permanent, make the user take a second step, which really does a POST with a button that looks like a button, to confirm the action. Example: “Do you really want to do XYZ?” Yes / Cancel. This is the right thing to do in many circumstances any way, and some actions should have the user reauthenticate in addition to confirming. No excuse not to do it that way, especially with AJAX, the confirmation form can be a modal dialog and not even a new page.