2016-12-20 7 views
1

私はクライアントとサーバーの間でJSonを送受信しようとしていました。JSonオブジェクトを動的に生成する方法は?

私はJSON(私は思った)機能による

self.gen_data=function() 
    { //create request data 
     var input_array =self.input_value(); 
     myJson={ 
       request_type:1, //send request for problem 1 
       data_list:{} 
       }; 

     for(var k=0;k<input_array.length;k++) 
     { 
      myJson.data_list[k]=input_array[k]; //a number in array 
     } 
     console.log(myJson); 
     return myJson; 

    } 

は、サーバー、サーバー

var data=req.body; 

console.log("request_type: ",req.body.request_type); 

console.log("data_list size: ",data.data_list.length); 

/* 
for(var i=0;i<data.data_list.length;i++) 
{ 
    console.log(data.data_list[k]); 
} 
*/ 

$.ajax({ 
     type: "POST", 
     url: self.serverURI, 
     data: JSON.stringify(self.gen_data()), 
     dataType: 'json', 
     success: function (result) 
     { 
      //console.log(result); 
      alert(JSON.stringify(result)); 
      //alert(result.a); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) 
     { 
       console.log(xhr); 
     } 
    }); 

にそれを読むことはできませんが、それはのように表示生成:

data_list size: undefined 

アレイ要素の読み取りエラーが発生しました。

+0

JSON.stringify()JSON文字列を返しますが、あなたがJSONオブジェクトをしたいようですか? – unicorn2

+0

@ unicorn2私は、サーバーとクライアントでJSonのコンテンツを読む方法を、送受信と混同しています。あなたは例を挙げることができますか?私はそれに感謝します。 – arslan

+0

@alim、 'processData:false'オプションを追加しようとするか、いくつかのキーでJSONを渡してください。例:' data:{json:JSON.stringify(self.gen_data())} ' –

答えて

2

JSON.stringify()はJSON文字列を返しますが、JSONオブジェクトが必要です。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

JSON.stringifyなしてみてください。

$.ajax({ 
     type: "POST", 
     url: self.serverURI, 
     data: self.gen_data(), 
     dataType: 'json', 
     success: function (result) 
     { 
      //console.log(result); 
      alert(JSON.stringify(result)); 
      //alert(result.a); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) 
     { 
       console.log(xhr); 
     } 
    }); 
+0

こんにちは、私はgen_data()を変更し、サーバー上のそのリストを読み取ることに失敗しました。あなたはどうか見てみることができますか? – arslan

+0

あなたはself.input_value()を表示できますか? – unicorn2

+0

self.input_value()は配列[1,4,5,6,8]を返しています。私はクライアント側で印刷しましたが、問題はありません。 – arslan

関連する問題