2016-02-05 56 views
0

您好我正在嘗試使用cgi腳本執行ajax,我不確定這是否可行。我試圖從文件中獲取內容。ajax在perl cgi腳本中不起作用

這裏是我的代碼:

#!/usr/bin/perl 
use warnings; 
use strict; 
use CGI; 
use CGI::Carp qw(fatalsToBrowser); 

my $cgi = CGI->new; 

print $cgi->header(
     -type=> "text/html"); 

print <<EOF; 
<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $.ajax({url:"test1.txt", 
      dataType:"text", 
       success: function(result){ 
     $("#div1").html(result); 
     }}).fail(function(jqXHR, textStatus, errorThrown) { console.log(textStatus,errorThrown)}); 
    }); 
}); 
</script> 
</head> 
<body> 

<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div> 

<button>Get External Content</button> 

</body> 
</html> 

EOF 

相同的代碼,只有HTML是可以正常使用,但是當我用CGI嘗試它不工作。 我不知道這是否是正確的方式來寫這樣或沒有?

請有人建議我使其正常工作的正確方法。

在此先感謝。

+0

這裏的問題最初調用時,如果它仍然是'test1.txt',它將不會被瀏覽器解析爲HTML。另外,當您進行AJAX調用時,您只需要發回特定的文本而不是HTML。 Ajax是否調用腳本本身? – Twisty

+0

no..it不是調用 – Awanti

+0

你可能想嘗試使用'$(「#div1」)。load(「test1.txt」);'它會將文本加載到div中。 – Twisty

回答

0

根據一些研究,你必須打印EOF

print EOF;

所以整個腳本會是什麼樣子:

#!/usr/bin/perl 
use warnings; 
use strict; 
use CGI; 
use CGI::Carp qw(fatalsToBrowser); 

my $cgi = CGI->new; 

print $cgi->header(
     -type=> "text/html"); 

print <<EOF; 
<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $.ajax({url:"test1.txt", 
      dataType:"text", 
       success: function(result){ 
     $("#div1").html(result); 
     }}).fail(function(jqXHR, textStatus, errorThrown) { console.log(textStatus,errorThrown)}); 
    }); 
}); 
</script> 
</head> 
<body> 

<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div> 

<button>Get External Content</button> 

</body> 
</html> 
EOF 

print EOF; 

例在這裏看到:http://www.cgi101.com/book/ch6/text.html

+0

我們不能像那樣打印......我們只能打印文件句柄 – Awanti