2016-12-20 110 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