2011-06-08 67 views
0

我试图从客户端传递一个json字符串到服务器,我有一个数组,这是JSON.stringify编辑,然后发送到服务器的url看起来像这样:长json字符串返回err400,而较短的字符串正常工作

http://localhost/sublimation/index.php/index/imgCreate/ { “名称”: “pillow.png”, “元件”: “篮球-2.png”, “elAngle”:0 “ELTOP”:78, “elLeft”:117,” elHeight “:90,” elWidth “:90,” captionA “:” “ ”卡帕尔“:0 ”capAG“:200, ”capAB“:200, ”capATop“:112, ”capALeft“:141,” capASize “:12,” captionB “:””, “capBR”:0 “capBG”:200, “capBB”:200, “capBTop”:112, “capBLeft”:141, “capBSize”:12, “照片” :“#”,“picTop”:0,“picLeft”:0,“picHeight”:20,“picWidth”:110,“picAngle”:0}

现在返回错误400 MSG:

HTTP错误400.请求URL无效。

我设法让它工作的唯一方法是通过缩短字符串,其他任何失败。 因为它看起来json不是最流行的事情,因为我没有找到任何东西,甚至远程帮助谷歌。

有没有人有想法?

TNX, 伊

EDIT !!; 我已经编辑根据建议的代码,这是什么,现在我得到:(仍是同样的错误)

POST http://localhost/sublimation/index.php%2Findex%2FimgCreate%2F%7B%22name%22%3A%22pillow.png%22%2C%22element%22%3A%22amaut2.png%22%2C%22elAngle%22%3A0%2C%22elTop%22%3A34%2C%22elLeft%22%3A124%2C%22elHeight%22%3A90%2C%22elWidth%22%3A90%2C%22captionA%22%3A%22%22%2C%22capAR%22%3A%220%22%2C%22capAG%22%3A%22%200%22%2C%22capAB%22%3A%22%200%22%2C%22capATop%22%3A112%2C%22capALeft%22%3A141%2C%22capASize%22%3A%2212%22%2C%22captionB%22%3A%22%22%2C%22capBR%22%3A%220%22%2C%22capBG%22%3A%22%200%22%2C%22capBB%22%3A%22%200%22%2C%22capBTop%22%3A112%2C%22capBLeft%22%3A141%2C%22capBSize%22%3A%2212%22%2C%22photo%22%3A%22%23%22%2C%22picTop%22%3A0%2C%22picLeft%22%3A0%2C%22picHeight%22%3A20%2C%22picWidth%22%3A110%2C%22picAngle%22%3A0%7D 400(错误请求)

+0

JSON非常流行,所以尽可能尽快摆脱这种误解。 – Jordan 2011-06-08 21:25:28

+0

当我们说POST是要走的路,我们的意思是你发布到http://localhost/sublimation/index.php并传输消息正文中的所有参数,而不是URL。该URL长度为720个字符,并不是那么多(对我的本地Apache来说工作正常),但对于某些Web服务器可能已经太多了。使用POST的要点是保持URL短。 – 2011-06-20 08:28:50

+0

这就是我正在做的。我现在的代码是: var data_string = JSON.stringify(data); \t url =“index。php/index/imgCreate /“+ data_string; \t url = encodeURIComponent(url); 当数据是一个字符串,它仍然显示错误的请求,我在我的问题的底部编辑的代码是从控制台和而不是URL – 2011-06-20 19:53:22

回答

0

您需要编码您的JSON ,因为你在json中有一些特殊的字符,如果它们在url中就会相互作用。 This可以帮助或提供线索。

问题也可能与#

0

它看起来像你通过GET而不是POST发送你的JSON。太长的GET会导致错误,并且容易出问题。编码你的JSON字符串也会有帮助。

1

即使它更短,这当然不是一个有效的URL。像“,{,},#和maybe:这样的字符在URL的路径段中是不允许的,你必须对它们进行URI-secape(”变成%22等等)。也许你的浏览器会自动为你做,并且结果URL达到网络服务器的长度限制,然后返回400.

使用POST请求应该可以解决问题。您可以在网址中传输更多的数据。

+0

POST绝对是你想要传输json的方式。 – 2011-06-08 21:53:31

+0

当你看到它的url后,我从%22等改变它,使它更具可读性,我会尝试发布数据,谢谢您 – 2011-06-09 21:31:26

相关问题