длинная строка json возвращает err400, а более короткая строка работает нормально - PullRequest
0 голосов
/ 09 июня 2011

Я пытаюсь передать строку json от клиента к серверу, у меня есть массив, который является JSON.stringify-ed, а затем отправлен на сервер в URL, который выглядит следующим образом:

http://localhost/sublimation/index.php/index/imgCreate/{"name":"pillow.png","element":"basketball-2.png","elAngle":0,"elTop":78,"elLeft":117,"elHeight":90,"elWidth":90,"captionA":"","capAR":0,"capAG":200,"capAB":200,"capATop":112,"capALeft":141,"capASize":12,"captionB":"","capBR":0,"capBG":200,"capBB":200,"capBTop":112,"capBLeft":141,"capBSize":12,"photo":"#","picTop":0,"picLeft":0,"picHeight":20,"picWidth":110,"picAngle":0}

теперь возвращает ошибку 400 msg:

Ошибка HTTP 400. URL-адрес запроса недействителен.

единственный способ, которым мне удалось заставить его работать, - это обрезать строку, что-то еще не получилось. Судя по всему, json - не самая популярная вещь, потому что мне не удалось найти в Google ничего, даже отдаленно полезного.

У кого-нибудь есть идея?

Тпй, Идо

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 ]

1 голос
/ 09 июня 2011

Это определенно недопустимый URL, даже если он был короче.Символы, такие как ", {,}, # и может быть: запрещены в сегменте пути URL-адреса. Вам необходимо их URI-secape (" становится% 22 и т. Д.).Возможно, ваш браузер сделал это автоматически для вас, и полученный URL достиг предела длины веб-сервера, который затем возвратил 400.

Использование запросов POST должно решить проблему.Вы можете передавать туда гораздо больше данных, чем в URL.

0 голосов
/ 09 июня 2011

Похоже, вы отправляете свой JSON GET вместо POST.Слишком длинный GET приведет к ошибкам и подвержен проблемам.Также поможет кодирование вашей строки JSON.

0 голосов
/ 09 июня 2011

Вам нужно закодировать ваш json, потому что у вас есть некоторые специальные символы в json, которые взаимодействуют, если они находятся в URL. Это может помочь или дать подсказку.

Проблема также может быть с #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...