#javascript #ajax
#javascript #ajax
Вопрос:
Я использую вызов ajax следующим образом:
o.open("POST",q,true);
o.setRequestHeader("Content-type","application/x-www-form-urlencoded");
o.setRequestHeader("Content-length",p.length);
o.setRequestHeader("Connection","close");
Где q = URL-адрес и строка запроса.
p = только строка запроса.
Мой запрос принимает форму: "/apps/nettrax/f/events_detail.php?get=1amp;ids=" multiple values added like this: 123~34567~567~678~etc
Все это работает, если есть несколько значений, но строки с большими значениями терпят неудачу — переменная ids не передается (хотя передается get)… * Я не использую jquery.
Комментарии:
1. Где происходит сбой? Используйте что-то вроде Firebug или Charles Proxy для просмотра отправляемых запросов и просмотрите журналы вашего сервера, чтобы просмотреть полученные запросы. Браузеру не удается отправить данные или сервер не может их принять?
2. Существует ограничение на длину URL-адреса. Когда вы говорите «большой», сколько символов мы имеем в виду?
Ответ №1:
Вы отправляете запрос POST, но указываете параметры в GET через URL. Существует ограничение на размер URL-адресов, так что это не сработает. Вы должны передавать параметры в send()
вызове, чтобы они были указаны как данные POST:
var parameters = "ids=" encodeURIComponent(ids);
o.open("POST","events_detail.php",true);
o.setRequestHeader("Content-type","application/x-www-form-urlencoded");
o.setRequestHeader("Content-length",p.length);
o.setRequestHeader("Connection","close");
o.send(parameters);
Комментарии:
1. не заметил этого, он отправляет post при передаче параметров через get. неплохо
Ответ №2:
Я предполагаю, что могут происходить эти две вещи:
a) ваша строка URL слишком длинная, поэтому она усекается
б) ваши параметры закодированы не так, как должен быть URL, поэтому строка «разрывает» URL. при использовании php используйте функцию, подобную urlencode(), или создайте свою собственную.