8

我想使用 jquery 在 ajax 中传递以下嵌套对象:

{
   "parent_param1" : [
      {
         "sub_param1" : "sub_val1",
         "sub_param2" : "sub_val2"
      },
      {
         "sub_param1" : "sub_val1",
         "sub_param2" : "sub_val2"
      },
      {
         "sub_param1" : "sub_val1",
         "sub_param2" : "sub_val2"
      }
   ],
   "parent_param2" : "par_val2",
   "parent_param3" : "par_val3"
}

我试图像下面的例子一样传递它:

var url = encodedURL;
var data = 'Above Object';

$.ajax({            
    type:'POST',
    url:url,
    dataType:'json',
    data:data,
        success:function(res){                      
              alert('success');                         
    },
    error:function(e){
      alert('error');   
    }                   
});

我收到运行时错误作为响应。我想确保这是使用 jQuery 在 AJAX 中传递嵌套对象的正确方法吗?

4

2 回答 2

8

现在您只是将一个对象传递给服务器,没有密钥。您需要将数据作为 JSON 字符串传递。

console.log(typeof data); //object
console.log(typeof JSON.stringify(data)); //string

为了读取服务器端的数据,您需要将数据作为带有键和值的对象文字传递。像这样的东西:

data: { dto: JSON.stringify(data) },

在服务器端,您可以根据语言以不同的方式访问对象。

PHP:

$dto = $_POST['dto'];

ASP.NET:

var dto = HttpContext.Current.Request.Form['dto'];
于 2013-02-14T13:46:10.060 回答
0

我相信您遇到的问题是您正在尝试发布对象本身。您需要将值作为字符串发布,然后在服务器端的对象上解码。这里有一个类似的问题:

jQuery $.post() JSON 对象

JQuery 将 JSON 对象发布到服务器

于 2013-02-14T13:46:22.123 回答