-1

以下は、私の 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');
    }
});

以下は私の出力です:

ここに画像の説明を入力

最初の行を編集し、火災のバグを確認したところ、値が渡されていることがわかりましたが、CGI ページでそれを取得できません。CGI ページで値を取得する形式は何ですか。以下は私の火災ですバグ出力:

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

現在、次の形式を使用して値を取得しようとしました: print $cgi->param("value1");

CGI::Ajax を使用するのと同じように、私の CGI ページで値を取得するために必要な他のパッケージはありますか?助けてください???

4

2 に答える 2

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 }

'value1'...パラメータ名と変数に含まれる値を使用して、リクエストにパラメータを追加するようjQueryに指示しvalue1ます。

あなたが持っていたコード:

url : 'process.cgi?'+value1

...パラメータ名を指定せずに、ユーザーが直接入力した値をクエリ文字列に追加していたため、たとえば、「test」と入力すると、次の URL が取得されます。

process.cgi?test

...あなたが望んでいたのは:

process.cgi?value1=test
于 2013-06-29T06:02:24.153 に答える
1

Perl コードをローカルでテストしましたが、HTTP 要求からパラメーターを正しく解析しています。したがって、あなたの側で機能しない場合は、Web ページが有効な要求を行っていないことが原因であるに違いありません。

ブラウザを開いてアクセスするとどうなりますかhttp://localhost/process.cgi?value1=foo

(「localhost」を、これをテストしているサーバーに変更する必要がある場合があります。)

更新: innaM がコメントで指摘しているように、そのモジュールにアクセスできないため、DbSlaveConnect セクションをテストできなかったことを明確にする必要があります。への呼び出しがDbSlaveConnect()何らかの形で失敗している可能性があります。

于 2013-06-29T09:23:26.940 に答える