2012-02-28 7 views
0

GETリクエストを作成するのは簡単ですが、アンカータグのhref属性にURLを指定するだけです。GET URLにJSONオブジェクトを追加するにはどうすればよいですか?

しかし、どのようにJSONオブジェクトをそのURLに追加しますか?

これはjQueryによって行われなければならないと思っていますが、私はユーザーAJAXを使うことはできません。また、レスポンスはブラウザによってレンダリングされません。

これまでのところ、これを試しましたが、$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));はデータを追加しません。これはonClickでトリガされます。

+1

をあなたはAJAXを使用することはできませんか、応答がレンダリングされていないとはどういう意味ですか?リンクを生成しようとしていますか? – Josh

+0

はい、私はちょうどサーバーが私のブラウザをリダイレクトできるようにHTTP GET要求をしたいと思っています。 – DerNalia

+1

厳密に言えば、jQueryの必要はありません。JSONを正しくエンコードするだけです: 'link'。しかし、私はあなたの問題に十分な情報(コンテキスト)を提供するとは思わない。 –

答えて

1

これは動作するはずです:

jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data})); 
2

GETリクエストにはクエリ文字列のパラメータがあります。本当に必要なGETリクエストの場合は、リクエストのキー値のペアにオブジェクトのプロパティをマップできます。例えば

JSON object: { prop1: val1, prop2: val2 } 
url get querystring: ?prop1=val1&prop2=val2 

しかし、あなたがサーバーにオブジェクトを送信する場合は、おそらくあなたが本当にPOSTをしたいですか?その場合、JSONオブジェクトはPOSTの本体にあります。

3

GET要求の値はすべて、要求文字列にURLエンコードされていると想定されます。

これを行うjQuery.get()関数がありますが、それはクエリ文字列パラメータとして一連の名前/値のペアをシリアル化します。

AJAXを使用できないということがどういう意味なのかよく分かりません。戻り値はHTMLたの進路と仮定

$.get("foo/bar", { foo: "foo", bar: "bar" }, 
    function(data){ 
    $("#myTarget").append(data); 
    }); 

:あなたはjQueryのを使用すると、このような何かをするだろう。

私はもう少し理解していると思います。あなただけのクエリ文字列の中にいくつかのオブジェクトを有効にしたい場合は、独自の機能はかなり簡単ロールバックすることができます:

function toQueryString(obj){ 
    var formattedVals = []; 

    for(var prop in obj){ 
     formattedVals.push(prop + "=" + obj[prop]); 
    } 

    return formattedVals.join("&"); 
} 

あなたはそれを呼び出すことによって、この方法をどのように動作するかを見ることができます。

var data = { foo: "foo", bar: "bar" }; 

alert(toQueryString(data)); 

とにかく、これはあなたの道の90%を取得する必要があります。

+0

+1でjQuery構文がJSONをクエリ文字列のパラメータにマップするためにトリガされます。 – bryanmac

+0

あなたの関数は入れ子構造のためには機能しませんか? – DerNalia

+0

@DerNalia - もちろんそうではありません...ネストされた構造を単純な名前の値ペアでどのように表現しますか?ほとんどの実装では、単純なオブジェクトまたは辞書が必要です。 – Josh

関連する問題