Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs,jqueryajax,传输和接收对象的格式转换_Javascript_Jquery_Node.js_Ajax - Fatal编程技术网

Javascript nodejs,jqueryajax,传输和接收对象的格式转换

Javascript nodejs,jqueryajax,传输和接收对象的格式转换,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,比如说 将obj发送到节点js路由器“/test”的ajax var obj =new object(); obj.a='a'; obj.b='b'; $.ajax({ url:"/test", type:"POST", data:{ obj:obj },success:function(){ },error:function(){ } }); 接收obj的“/test”路由器: router.post('/test',fun

比如说 将obj发送到节点js路由器“/test”的ajax

var obj =new object();
obj.a='a';
obj.b='b';

$.ajax({
    url:"/test",
    type:"POST",
    data:{
      obj:obj
    },success:function(){


    },error:function(){

    }
});
接收obj的“/test”路由器:

router.post('/test',function(req, res, next){

    for(var key in req.body){
        console.log(key);
        console.log(req.body[key]);
    }
    res.end();
});
此对象将自动转换为其他格式

{
'obj[a]':'a',
'obj[b]':'b'
}
键不是
'a'
,而是转换为
'obj[a]'

如何正确接收或发送

像这样:

var obj = {
a:'a',
b:'b'
};

$.ajax({
    url:"/test",
    type:"POST",
    data:obj,
    success:function(){


    },error:function(){

    }
});
控制台日志(req.body.obj)是:

{
  a:a,
  b:b
} 

我想您只是想将
数据:obj
传递给
$.ajax()
,而不是
数据:{obj:obj}
。你是将它嵌套在另一个你不想要的对象中的人

$.ajax({
    url:"/test",
    type:"POST",
    data:obj,
    success:function(){

    }, error:function(){

    }
});

另外,请注意,您需要一些中间件来正确地将其解析回服务器上的JSON。否则,它将只是一个字符串。

我认为您只想将
数据:obj
传递给
$.ajax()
,而不是
数据:{obj:obj}
。你是将它嵌套在另一个你不想要的对象中的人

$.ajax({
    url:"/test",
    type:"POST",
    data:obj,
    success:function(){

    }, error:function(){

    }
});

另外,请注意,您需要一些中间件来正确地将其解析回服务器上的JSON。否则,它将只是一个字符串。

按如下方式创建对象:

var obj = {
a:'a',
b:'b'
};

$.ajax({
    url:"/test",
    type:"POST",
    data:obj,
    success:function(){


    },error:function(){

    }
});

按如下方式创建对象:

var obj = {
a:'a',
b:'b'
};

$.ajax({
    url:"/test",
    type:"POST",
    data:obj,
    success:function(){


    },error:function(){

    }
});

如果有n个对象呢?obj_1,obj_2…obj_你创建一个更大的对象,其中包含你想要的所有对象如果有n个对象怎么办?obj_1,obj_2…obj_你创建一个更大的对象,其中包含你想要的所有对象如果有n个对象怎么办?obj_1,obj_2…obj_n@AlbertChen-
$.ajax()
文档指出,您传递的
数据
属性必须是键/值对的单个对象,因为它将以
aaa=xxx&bbb=yyy
或字符串或数组的url查询形式对其进行序列化。如果您想要一个更复杂的数据结构,那么只需自己用
JSON.stringify()
对其进行序列化,然后在另一端对其进行
JSON.parse()
即可。对于多个对象,您可以传递一个对象数组,也可以先使用
JSON.stringify()
传递一个字符串,然后在服务器上使用
JSON.parse()
返回数组。如果有n个对象呢?obj_1,obj_2…obj_n@AlbertChen-
$.ajax()
文档指出,您传递的
数据
属性必须是键/值对的单个对象,因为它将以
aaa=xxx&bbb=yyy
或字符串或数组的url查询形式对其进行序列化。如果您想要一个更复杂的数据结构,那么只需自己用
JSON.stringify()
对其进行序列化,然后在另一端对其进行
JSON.parse()
即可。对于多个对象,您可以传递一个对象数组,也可以先使用
JSON.stringify()
传递一个字符串,然后在服务器上使用
JSON.parse()
返回数组。