long json string返回err400,而较短的字符串工作正常

时间:2011-06-08 21:20:48

标签: php ajax json continuous-integration

我正在尝试将json字符串从客户端传递到服务器,我有一个JSON.stringify-ed数组,然后在一个url中发送到服务器,如下所示:

  

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.请求网址无效。

我设法让它发挥作用的唯一方法是缩短字符串,其他任何失败。 因为它看起来json不是最受欢迎的东西因为我没有设法找到任何甚至远程帮助谷歌。

有没有人有想法?

TNX, IDO

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(错误请求)

3 个答案:

答案 0 :(得分:1)

即使篇幅较短,这肯定不是有效的网址。在URL的路径段中不允许使用“,{,},#和may:等字符。您必须对它们进行URI-secape(”变为%22,依此类推)。也许您的浏览器会自动为您执行此操作,并且生成的URL达到了Web服务器的长度限制,然后返回400.

使用POST请求可以解决问题。您可以传输比URL更多的数据。

答案 1 :(得分:0)

你需要对你的json进行编码,因为你在json中有一些特殊的字符,如果它们在url中就可以进行交互。 This可以提供帮助或提供线索。

问题也可能出在#

答案 2 :(得分:0)

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