1

perl cgi スクリプトへの ajax 呼び出しのデータ部分から複数のパラメーターをデコードできる必要があります。他のすべてが自分のコードで機能していることはわかっていますが、何らかの理由で、JSON モジュールのデコード メソッドを適切に機能させて、データを JSON 形式からパラメーターに再度復元することができないようです。私のjQuery ajax呼び出しのデータはこのように設定されていますが、これは正しいです.

data: {
    maxRows: 5,
    productName: request.term
}

ただし、それを perl に解析しようとしている方法に問題があります。

my $json = JSON->new->utf8->allow_nonref;
my $json_text = $cgi->param('data');
my $json_array = $json->decode( $json_text );

正しい最終結果がハッシュの配列であることはわかっています。ここまでできれば、大丈夫だと思います。ただし、私のデコード行は機能せず、実際には実行時にスクリプト全体が失敗します。

私は広範囲に見回しましたが、これを理解することはできません。私はそれがいくつかの非常に小さな調整であることを確信しています。

$cgi->param('data') を使用してパラメーターを正しく取得していますか? それは名前付きデータになるのでしょうか、それとも別のものですか?

4

2 に答える 2

1

JSON データが無効です。JSONLintを使用してデータを検証します。JSON データの正しい例は次のようになります。

{
    "maxRows": 5,
    "productName": "request.term"
}

キーを省略しdata:、オブジェクト内のすべてのキーを引用符で囲んでも問題ありません。式 request.term は、定義されていないため、文字列の外では許可されていません。

編集

さて、jQuery を使用して JSON データを送信しています。Ajax 経由で jQuery から JSON を正しく送信する方法については、こちらをご覧ください。また、 jQuery.ajaxによって投稿されたデータを確認するには、 FireBugを使用することをお勧めします。

于 2013-04-09T11:04:45.557 に答える