2010-09-30 126 views
1

我正在构建一个简单的基于Web的计算器,它从HTML表单中获取方程,并使用PHP在服务器上对其进行评估并将结果发回。如何在Mootools中通过AJAX发送的数据中转义'+'?

我使用MooTools的通过req.send AJAX操作发送数据。

但是,每次我在方程式中有一个“+”,但并未对服务器获取POST数据。

任何想法,为什么发生这种情况,我怎么能解决它?

例如:

10 + 12在HTML形式被看作是在$_POST数据10 12

MooTools的送我使用的命令是这样与

<textarea name="equationTextArea">10+12</textarea> 

req.send("eqn="+$('equationTextArea').value); 

提交后,我看到$_REQUEST['eqn']10 12

+0

感谢保罗为使问题听起来更好!我是新来的:) – arbithero 2010-09-30 19:13:34

回答

4

尝试使用功能encodeURIComponent在你的文本值。它,以及.. uri编码你的文字。

+0

为什么我们必须对POST数据进行URI编码? – arbithero 2010-09-30 09:17:29

+0

我看过其他网站在POST中没有任何URI编码方式 – arbithero 2010-09-30 09:17:50

+0

我们为某些字符做了这个,比如根据RFC 1738,它是一个“空格”。如果其他网站没有将uri编码放在它们的值上,它可能是一个框架为他们解决了这个问题。在这个/你的情况下,它似乎不会像那样发生。 – CharlesLeaf 2010-09-30 09:19:24

0

您的文本最有可能需要是URLEncoded

+1

不要让php标签欺骗你,这个问题的问题是客户端。尽管如此,在PHP中,我个人更喜欢'rawurlencoding',因为它符合RFC 1738。 – CharlesLeaf 2010-09-30 09:18:07

1

将表单的编码设置为multipart/form-data - 这是默认的application/x-www-form-urlencoded的替代方法,并且不会将空间编码为加号+

from the w3.org reference

<form action="http://example.com/cgi/handle" 
    enctype="multipart/form-data" 
    method="post"> 
+0

这是在做一个XMLHttpRequest。如果你想发送'multipart/form-data',你必须手动创建这个请求体,这比'application/x-www-form-urlencoded'更加努力。 – bobince 2010-09-30 09:35:26