2013-07-17 71 views
3

我必須將XML從客戶端發送到服務器端。如何向服務器發佈大量數據?

通過我所採用的方法是,:

首先將XML轉換爲串中的JavaScript和然後張貼爲URI

變種URL =「/perl/set_zorder_xml.cgi'+」 '+ xmlString +'&'+ location +'&'+'nocache ='+ randomnumber;

xml string是包含字符串形式的xml的字符串。

POST功能如下:

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

的問題是,當我的XML字符串是非常大的,然後html的414錯誤發生時即URL太大。 是否有任何出路,使用Javascript和Perl

+0

不正常地發送()XML,而不是將它添加到查詢字符串中,看起來像一個奇怪的事情,因爲你正在通過POST請求發出GET請求。 – adeneo

+0

我是新來的,所以可能是我弄得亂七八糟的,你可以通過循序漸進的程序,因爲現在我的結構是這樣的 – Zeeshan

+0

如果你使用'jquery',你可以用'ajax作爲真正的POST請求啓動請求'方法。這基本上與網址一起發送內容。這個內容對應於url參數及其值,並且不在URL長度限制之下。 – collapsar

回答

2

即使您正在執行POST請求,您仍然在URL的查詢字符串中發送數據。相反,您應該將數據作爲POST數據發送,並將其從URL中移除。

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

XHR .send()方法接受要作爲請求正文(即POST數據)發送的字符串。

+0

位於服務器端,其中是xml的字符串值。我的意思是哪個參數以字符串格式保存xml的值 – Zeeshan

+0

在上面的代碼中,數據將位於名爲'xml'的POST參數中。正如你在'.send()'調用中看到的那樣,我設置了'xml =',你可以改變它爲你想要的任何參數名稱。 – MrCode

+0

在服務器端: 我的代碼看起來像 使用CGI; 使用URI :: Escape; 要求'globalvariables.pl'; #Get 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