2013-07-17 3 views
3

Мне нужно отправить XML с клиентской стороны на сервер.Как разместить большие данные на сервере?

Метод, принятый мной в том, что:

Сначала XML преобразуется в строку в яваскрипт и затем разместить как Ури

вар URL = «/perl/set_zorder_xml.cgi'+» ? '+ xmlString +' & '+ location +' & '+' nocache = '+ randomnumber;

xml string - строка, содержащая xml в виде строки.

Сообщение функции выглядит следующим образом:

if (window.XMLHttpRequest) { 
      req_anno = new XMLHttpRequest(); 
      req_anno.open("POST", url, false); 
      req_anno.send(); 
      } 

Проблема заключается в том, что, когда мой XML-строка очень велика, то HTML 414 ошибки происходит т.е. URL слишком большим. Есть ли выход, Javascript и perl используется

+0

Как правило, вы не отправляете() XML, а не добавляете его в строку запроса, кажется странным, поскольку вы делаете запрос GET с запросом POST. – adeneo

+0

Я новичок, так что, возможно, я сделал беспорядок, вы можете выполнить процедуру, которая может быть выполнена, поскольку теперь моя структура похожа на это – Zeeshan

+0

, если вы используете 'jquery', вы можете запустить запрос как подлинный запрос POST с помощью' ajax 'методы. это в основном отправляет контент вместе с URL-адресом. это содержимое соответствует параметрам url и их значениям и не подпадает под пределы длины URL-адреса. – collapsar

ответ

2

Несмотря на то, что вы выполняете запрос POST, вы по-прежнему отправляете данные в строке запроса URL-адреса. Вместо этого вы должны переместить данные для отправки в виде данных POST и удалить их из URL-адреса.

req_anno.open("POST", '/perl/set_zorder_xml.cgi', false); 
req_anno.send('xml=' + encodeURIComponent(xmlString)); 

.send() метод XHR принимает строку, чтобы быть переданной в теле запроса (т.е. данных POST).

+0

на стороне сервера, где находится строковое значение xml. Я имею в виду, какой параметр содержит значение xml в строковом формате – Zeeshan

+0

В приведенном выше коде данные будут в параметре POST с именем 'xml'. Как вы можете видеть в вызове '.send()', я устанавливаю 'xml =', вы можете изменить это на любое имя параметра, которое вы хотите. – MrCode

+0

на стороне сервера: мой код выглядит как использование CGI; использование URI :: Escape; требует «globalvariables.pl»; # Получить STDIN: $ valStr = read (STDIN, $ stdin, $ ENV {'CONTENT_LENGTH'}); $ paramVal = CGI :: param(); print "Content-Type: text/html \ r \ n"; # заголовок сообщает клиенту, что вы отправляете XML print "\ r \ n"; print $ valStr; ** но как напечатать значение, которое имеет xml. ** Извините за основные вещи – Zeeshan

Смежные вопросы