Jquery 在cgi页面中检索使用ajax调用传递的值的方法是什么

Jquery 在cgi页面中检索使用ajax调用传递的值的方法是什么,jquery,ajax,perl,parameters,cgi,Jquery,Ajax,Perl,Parameters,Cgi,以下是my process.cgi文件的开始: #!/usr/bin/perl -wT use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use strict; #use CGI::Ajax; #print "sddsdsd"; print header; print start_html("Results"); use lib qw(.); use Bugzilla; use DbSlav

以下是my process.cgi文件的开始:

#!/usr/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
#use CGI::Ajax;

#print "sddsdsd";
print header;
print start_html("Results");

use lib qw(.);
use Bugzilla;
use DbSlaveConnect;
#require "process_bug.cgi";
my $dbslaveconnect;
$dbslaveconnect = &DbSlaveConnect();

my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh;
my $template = Bugzilla->template;
my $vars = {};
print "content-type: text/html \n\n";
print $cgi->param("value1");
以下是我在jquery中的ajax代码:

var value1 = jQuery(this).find("INPUT").val();
$.ajax({
    url: 'process.cgi?'+value1,

    // The type of request.
    type: "get",

    // The type of data that is getting returned.

    error: function(){
        ShowStatus( "AJAX - error()" );

        // Load the content in to the page.
        jContent.html( "<p>Page Not Found!!</p>" );
    },

    success: function( data ){
        alert('success');
    }
});
var value1=jQuery(this.find(“INPUT”).val();
$.ajax({
url:'process.cgi?'+value1,
//请求的类型。
键入:“获取”,
//返回的数据类型。
错误:函数(){
ShowStatus(“AJAX-error()”);
//将内容加载到页面中。
jContent.html(“找不到页面!!

”; }, 成功:功能(数据){ 警惕(“成功”); } });
以下是我的输出:

我编辑了第一行,检查了fire bug,发现值正在传递,但在我的cgi页面中无法检索。在cgi页面中检索值的格式是什么,下面是我的fire bug输出:

目前,我尝试使用以下格式检索该值: 打印$cgi->param(“value1”)


在我的cgi页面中是否需要任何其他软件包来获取该值,就像使用cgi::Ajax一样。请帮助我???

为您的
$添加
数据设置。Ajax()
调用:

   var value1 = jQuery(this).find("INPUT").val();
   $.ajax({
       url: 'process.cgi',
       data : { 'value1' : value1 },
       type: "get"    
       error: function () {
           ShowStatus("AJAX - error()");

           jContent.html("<p>Page Not Found!!</p>");
       },    
       success: function (data) {
           alert('success');
       }
   });
…它告诉jQuery使用参数名
'value1'
value1
变量中的任何值向请求添加参数

您拥有的代码:

url : 'process.cgi?'+value1
…将用户直接输入的值添加到查询字符串中,而不给它一个参数名,因此,例如,如果他们键入“test”,您将得到以下URL:

process.cgi?test
…当你想要的是:

process.cgi?value1=test

我已经在本地测试了您的Perl代码,它正确地解析了HTTP请求中的参数。因此,如果它在您这边不起作用,那一定是因为您的网页没有发出有效的请求

如果打开浏览器,只需访问
http://localhost/process.cgi?value1=foo

(您可能需要将“localhost”更改为您正在测试此功能的服务器。)


更新:正如innaM在评论中指出的,我应该明确指出,我无法测试DbSlaveConnect部分,因为我没有访问该模块的权限。对
DbSlaveConnect()
的调用可能以某种方式失败。

:(值正在传递,但它没有在cgi页面中打印。输出显示在过程中。cgi页面本身。因此,您尝试了我更新的JS,但它仍然无法在您的cgi中工作?是的……我尝试过这样做,但值仍然没有在cgi页面中打印对不起,我不是真的做Perl cgi的东西,我主要做基于Java的服务器端代码,有时如果
$cgi
实际上是请求,那么一些.NET,虽然我猜像
$cgi->param('value1')
这样的东西会起作用。我所展示的更改至少可以为您修复JS/jQuery方面的问题。也许如果您在问题中包含更多的Perl cgi代码,其他人可以提供帮助。为什么
打印“内容类型:text/html\n\n"
在perl脚本的末尾,当您从打印头开始时;
?当您第一次删除多余的东西时,调试东西会容易得多,这些多余的东西只会妨碍您的工作。为什么要否决投票?我已经研究了这么多网站来找出问题,并与许多人讨论了这个问题,但我没有得到一个完美的解决方案这就是为什么我把这个问题放在这里。可能其他人也会面临同样的问题。你怎么能说它没有用呢?停止搜索和询问,而是做一些调试怎么样?一个好问题的代码被精简到基本部分,这样人们就可以很容易地阅读和复制。然而,你的Perl代码有三分之二是完整的y与您的问题无关。DbSlaveConnect?那么您有了一个版本的
DbSlaveConnect
?是的,读取CGI参数的行应该可以工作,但只有Jennifer_justin可以知道其他部分是否会使脚本繁荣。
process.cgi?value1=test