我有一個客戶端應用程序,它通過AJAX POST請求(request.open("POST", url, flag)
)將一些數據提交給我的Perl CGI腳本。如何接收和響應Perl中的Ajax請求?
如何用Perl檢索這些數據並返回其他數據(AJAX響應)?
我有一個客戶端應用程序,它通過AJAX POST請求(request.open("POST", url, flag)
)將一些數據提交給我的Perl CGI腳本。如何接收和響應Perl中的Ajax請求?
如何用Perl檢索這些數據並返回其他數據(AJAX響應)?
與處理任何POST請求的方式相同。您需要一個位於url
的CGI腳本,它接收POST並返回JavaScript所期望的任何內容。與普通HTML表單POST唯一的區別是您將接收和傳輸的Content-Type。
使用核心CGI模塊。例如。
use strict;
use warnings;
use CGI;
my $q = CGI->new;
my $foo = $q->param('foo');
print $q->header;
print "You said $foo";
如果您的應用程序將是龐大而複雜,您可能需要調查Perl的Web應用程序框架之一,像CGI::Application或Catalyst。
這只是一個不好的建議。不能保證來自XMLHttpRequest的數據被格式化爲HTML表單的輸出。 – 2010-04-06 21:37:10
的確,沒有保證,但所有Ajax庫默認都使用表單編碼,除非您編寫自己的發佈數據字符串。鑑於OP沒有任何相反的說法,因此假定默認行爲是合理的。 – friedo 2010-04-06 22:02:23
好的,但你的回答沒有任何關於它可能或不可行的警告。 – 2010-04-07 01:04:33
CGI腳本的基本模型是「從STDIN中讀取,寫入STDOUT」。在輸入階段,環境變量CONTENT_LENGTH
給出從STDIN
讀取什麼的字節長度。在輸出級,你還需要發送基本的HTTP標頭,這是最小的一條線「的Content-Type」與MIME類型,像text/html
,或text/plain
等加一個空行:
Content-Type: text/plain
<your data starts here>
在在XMLHttpRequest的情況下,您完全控制了數據的格式,因此如何解析STDIN的輸入取決於您。同樣,你可以躺在mime類型中,併發送你想要的任何響應。
JSON是一種很好的將數據從Perl發送到JavaScript的格式。
use CGI;
my $q = CGI->new;
my $xml = $q->param('POSTDATA');
我知道它是如何工作的,但我對Perl不是很熟悉,所以我問。 「用同樣的方式處理任何POST請求」 - 我不知道如何使用Perl處理POST請求,這是我的問題。 – Peterim 2010-04-06 20:01:52
@Peterim,那麼你應該提供更多關於你想要完成的細節。有很多方法可以做到這一點,並且很難知道在不知道更多關於您的情況的情況下推薦哪些方法。 – cjm 2010-04-06 21:32:21