A couple of things:
First off, you can send data through a URL safely by using the escape() function from javascript:
window.location="myscript.php?company=" + encodeURIComponent("Ben & Jerry's Ice Cream");
and then you can decode the value in PHP using the urldecode() function:
$company = urldecode( $_GET["company"] );
and then you will have the value exactly as it was entered.
It is important to realize that you will have to encode the data whether you send the data through POST or GET. They are formatted the same, with both using & signs to separate key/value pairs.
Your second option is to use Ajax (as many others have proposed). This has the effect where it will not refresh the page. This may or may not be ok, but that is what will happen.
If you don't want to use an Ajax call, you third option is that you can simply place a form on the page:
<form name="myform" method="POST" action="MyPhpScript.php">
<input type="hidden" name="value1" />
<input type="hidden" name="value2" />
</form>
Then, from javascript, set the hidden form values and submit the form.
Pick your poison--you have plenty of options :)