1

以下にリストされている例のように、特別なパラメーターを使用してリクエストを送信したいと思います。残念ながら、このスクリプトは id のみを送信します。ネストされた JSON を転送するにはどうすればよいですか?

new Ajax.Request("/specials/update_users_specials", {
    method: 'post',
    parameters: {
        id: '1',
        data: {
            data_one: '2',
            data_two: '3'
        }
    },
    onSuccess:function(){}
});

アップデート。
私はもう試した

var parameters = {}; 
$A(rows).each(function(d){ 
    parameters[d.dataset.userId] = d.value; 
}); 
params={}; 
params['data']=parameters; 
params['part']=45; 

働かないでください。私はもう試した

var parameters_json = eval("(" +JSON.stringify(params) + ")");

働かないでください。そして今、私は試しました

$H({ id: '1', data: { data_one: '2', data_two: '3' } })

同じ結果です。

アップデート。

私はレールを使用していますが、私のソリューションは次のようになります。

var parameters = {}; 
$A(rows).each(function(d){ 
    parameters['users[' + d.dataset.userId + ']'] = d.value; 
}); 
parameters['part_id']=id;
4

1 に答える 1

2

マニュアルからhttp://www.prototypejs.org/api/ajax/options :

parameters '' get メソッドの場合は URL にエンコードされるか、他のメソッドの場合はリクエスト ボディにエンコードされる、リクエストのパラメーター。これは、パラメータを表すプロパティを使用して、URL エンコードされた文字列または任意のHash互換オブジェクト (基本的には何でも) として提供できます。」

ハッシュについては、http://www.prototypejs.org/api/hash :

Hash インスタンスを構築するには 2 つの方法があります。1 つ目は new キーワードを使用した通常の JavaScript オブジェクトのインスタンス化であり、2 つ目は$H関数を使用する方法です。プレーンな JavaScript オブジェクトまたはハッシュをそれらのいずれかに渡すと、元のオブジェクトがそのまま保持され、クローンが作成されます。

したがって、JSON から Hash を作成すると、うまくいくはずです。

アップデート

さらに彼らのページから (私が自分でプロトタイプを使用したのはずっと前のことです) http://www.prototypejs.org/learn/introduction-to-ajax

new Ajax.Request('/some_url', {
    method: 'get',
    parameters: {company: 'example', limit: 12}
});

パラメータは、ハッシュ (推奨) またはアンパサンドで区切られたキーと値のペアの文字列 (company=example&limit=12 など) として渡されます。

そのため、多次元ハッシュは理解せず、キーと値のペアだけを理解します。

ただし、Googleグループでこのコードスニペットが役立つ可能性があります.

于 2012-09-07T14:08:14.940 に答える