2012-01-20 7 views
7

配列をjson.stringifyに渡そうとしていますが、戻り値が空に戻ってきています。json.stringifyに配列を渡す

JSON.stringify({ json: data }) // returns `{"json":[]}` 

そして、ここでは、データの内容を次のようになります。

data[from] = "[email protected]" 
data[to] = "[email protected]" 
data[message] = "testmessage" 

jqueryの:

function SubmitUserInformation($group) { 
    var data = {}; 
    data = ArrayPush($group); 
    $.ajax({ 
     type: "POST", 
     url: "http://www.mlaglobal.com/components/handlers/FormRequestHandler.aspx/EmailFormRequestHandler", 
     data: JSON.stringify({ json: data }), 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8", 
     cache: false, 
     success: function (msg) { 
      if (msg) { 
       $('emailForm-content').hide(); 
       $('emailForm-thankyou').show(); 
      } 
     }, 
     error: function (msg) { 
      form.data("validator").invalidate(msg); 
     } 
    }); 
} 

function ArrayPush($group) { 
    var arr = new Array(); 
    $group.find('input[type=text],textarea').each(function() { 
     arr[$(this).attr('id')] = $(this).val(); 
    }); 
    return arr; 
} 

答えて

5
data = ArrayPush($group); 

data再割り当ての配列なので、すべてのあなたはExpandoプロパティになることです文字通りにされていません。あなたは配列のようにそれを使用していないので、あなたのArrayPushメソッド内

var obj = { }; 
+0

そうですね。ありがとうAdam – bflemi3

+0

@ bflemi3 - 確かな事! –

+1

名前を 'obj'に変更してください! – Phrogz

2

arr

var arr = new Array(); 

を変更するには、ArrayPushメソッド内のオブジェクトとして宣言する必要があります。また、関数内でthis.idthis.valueを使用することもできます。jQueryオブジェクトを作成する必要はありません。試してみてください

function ArrayPush($group) { 
    var arr = {}; 
    $group.find('input[type=text],textarea').each(function() { 
     arr[this.id] = this.value; 
    }); 
    return arr; 
} 
関連する問題