2011-06-08 92 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

相關問題