I now have a reproducible test showing that iPhone's MobileSafari can successfully send a POST request via JavaScript's XMLHttpRequest, but only to a resource with the same origin as the host page. When the resource has a different origin (i.e., for cross-domain POST requests), no post data is sent to the server. The request's Content-Length header has the value 0.
Here is the test showing cross-origin requests failing:
Bookmarks