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

时间:2013-06-29 05:56:41

标签: jquery ajax perl parameters cgi

以下是我的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');
    }
});

以下是我的输出:

enter image description here

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

enter image description here

enter image description here

enter image description here

enter image description here

目前我尝试使用以下格式检索值:     print $ cgi-&gt; param(“value1”);

是我的cgi页面中需要的任何其他包来取值,就像使用CGI :: Ajax.please帮我一样???

2 个答案:

答案 0 :(得分:2)

data电话中添加$.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');
       }
   });

包含此内容:

data : { 'value1' : value1 }

...它告诉jQuery使用参数名'value1'value1变量中的任何值添加参数。

您拥有的代码:

url : 'process.cgi?'+value1

...正在将用户直接输入的值添加到查询字符串中而不给它提供参数名称,例如,如果他们键入“test”,您将获得此URL:

process.cgi?test

......当你想要的是:

process.cgi?value1=test

答案 1 :(得分:1)

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

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

,会发生什么

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

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