2012-01-17 1 views
152

Possible Duplicate:
Serializing to JSON in jQueryパス配列

私はAjaxリクエストとして配列を送信したい:

info[0] = 'hi'; 
info[1] = 'hello'; 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 

私はこれをどのように行うことができますか?

+0

ソリューション: http://stackoverflow.com/questions/713884/convert-js-array-to-json-object-for-use-with-jquery-ajax – Z4k4r14

+0

タイプ: 'POST'、 URL: '/ url/action /'、 data:{param1:1、id: "text"}、 dataType: 'text'、 – Paul

答えて

197
info = []; 
info[0] = 'hi'; 
info[1] = 'hello'; 


$.ajax({ 
    type: "POST", 
    data: {info:info}, 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 
ここ
+9

yes ... that worked..thanks..oneもっと多くのことができます...初期化されます** info = {}; ** then ** data:info、** –

+1

それは0 = hi&1 = helloを送信します、それは動作しますか?サーバー側のコードに依存します。 info = {}はJavascriptの普通のオブジェクトです。 info = []は配列オブジェクトです。 – Diode

+0

すべてのキーの代わりに 'info = arrayasvalues'が必要な場合は、どのようにしますか? –

52

だけJSON.stringifyメソッドを使用すると、以下のように、$アヤックス機能のための「データ」パラメータとして、それを通過:

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    dataType: "json", 
    data: JSON.stringify({ paramName: info }), 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 

あなたはちょうどあなたがJSON2.jsを含めることを確認する必要がありますあなたはjQueryのを使用しているので、ページ内のファイル...

+0

JSON.stringify(...)を追加する必要がありました。 – ChaseHardin

+0

私の場合、上記のコードでは要求されたキー値マップが間違っていました。データ:{paramName:JSON.stringify(info)}、 – Shogg

8

は、データをシリアル化して、AJAX呼び出しのデータパラメータにそれを渡すことseralize関数の使用してください:

info[0] = 'hi'; 
info[1] = 'hello'; 

var data_to_send = $.serialize(info); 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: data_to_send, 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 
+1

これは、少なくとも今日は真実ではありません。 jQueryは実際には配列を自動シリアライズしません。私は整数の単純な配列で試したとき、最後の項目だけを保持しました。詳細については、この記事をチェックしてください:http://stackoverflow.com/a/4239496/261332 – userfuser

+0

ありがとうございました@userfuser 私は答えを更新し、自動シリアル化部分を削除しました。 – BlackDivine

+11

これにはどのようにして非常に多くのアップフォースがありますか? 'jQuery.serialize()'のようなjQuery関数はありません。 '.serialize()'がありますが、これはフォーム要素のセットで使われることを意図しています。このコードを試してみますと、 'TypeError:$ .serializeは関数ではありません。' – billynoah

関連する問題