2011-01-22 2 views
0

はこのへ... ...私はこれを有効にするにはどうすればよいのサーバー

{ 
    'name': 'John', 
    'surname': 'Smith' 
} 

をJSONを送信しますか?私はAJAXを介してサーバにJSONを送信しようとしている

name=John&surname=Smith 

は...(任意のJSのフレームワークなしIE)をあなたに

+0

そうしないようなものを使用することができます。任意のJSON(構造体を平坦化する必要があります)では動作しませんが、単純なオブジェクト(つまり、サブオブジェクトなし)を保持している限り動作します。 JSONを送信したい場合は、それをポストして、サーバー側のものに解析をさせてください。あなたがJSONを投稿するはずであれば、サーバーは何か他のことをするのを混乱させます。 – cHao

+1

文字列内に同じ構造(二重引用符で囲んでいる)がある場合にのみ、JSONのようには見えません。現在はJavaScriptオブジェクトです。 –

答えて

2

Gernericallyに感謝

var o = {'name': 'John', 'surname': 'Smith'}; 
var q = []; 

for (p in o) { 
    if (o.hasOwnProperty(p)) { 
    q.push(encodeURIComponent(p) + "=" + encodeURIComponent(o[p])); 
    } 
} 

q = q.join("&"); // "name=John&surname=Smith" 

コメントに記載されている人が既に述べたように、これはフラットでネストされていないオブジェクトに対してのみ機能します。高度な用途の場合は、を強くにすると、HTTPポスト操作を行い、JSON文字列として変更されていないオブジェクトを送信することをお勧めします。

すべてのJSライブラリは、オブジェクトをJSONに変換する方法を提供しています。オブジェクトをシリアル化する方法は他にもあります(http://json.org/js.htmlのDouglas Crockford自身の実装など)。

+0

これは今のところこの答えのための最良の方法です。それは配列の中にあることは、私の答えにある最後とそれを取り除く。 –

+0

JSONではありません。これはJavaScriptオブジェクトです。 –

+0

@Felix:はい、そうです。私は言葉を修正しました。私は、JSオブジェクトは実際にOPが持っているものだと仮定するのは安全だと思います*そして、彼はそれをJSONと呼んでいます。 – Tomalak

0
var jsoncode = { 
    'name': 'John', 
    'surname': 'Smith' 
}; 
var querystring = 'name=' + encodeURI(jsoncode.name) + '&surname=' + encodeURI(jsoncode.surname); 
0

あり、これを行うにはいくつかの方法が、おそらく最も簡単には、あなたのオブジェクトのイテレータを書くことである:

var propstr = "?"; 
for (prop in jsonCode) { 
    if (jsonCode.hasOwnProperty(prop)) { 
     propstr += prop + "=" + jsonCode[prop] + "&" 
    } 
} 
0

まず、あなたは、任意のJavaScriptライブラリを使用していますか? (jquery、プロトタイプなど)。あなたがそこにいるなら、どこかでこれを行う機能があります。あなたはJSONを取り、フォームのポストにそれを回すしようとしているように聞こえる実際

var urlParams = '?'; 
var index = 0; 
for(var key in obj){ 
If(index != 0) urlParams += '&'; 
urlParams += key + '='+obj[key]; 
} 
関連する問題