JSON理解[object object],jQuery使用AJAX传递值

时间:2013-02-22 23:11:38

标签: jquery ajax json

我有一个值数组,我已经转换为JSON,所以我可以插入一个属性(不知道其他任何方式):

<div data-categories="[[{"id":"4123","name":"Sushi Restaurant","pluralName":"Sushi Restaurants","shortName":"Sushi"}]]">
</div>

然而,它变成了什么,可能有更多的值而不是这个简单的JSON

[
  [
     {"id":"4123","name":"Sushi Restaurant","pluralName":"Sushi Restaurants","shortName":"Sushi"},
     {"id":"5555","name":"More","pluralName":"More","shortName":"More"}
  ]
]

如上所述。

现在我无法将带有ajax的JSON传递给另一个文件。

var cats = $('div').data('categories');
alert(cats); // this alerts object object
var categories = "cats="+cats;
$.ajax({ //json data for categories
    url: 'saving.php',
    type: 'post',
    dataType: 'json',
    data: categories
}).done(function(data){
    alert(data); //this does not get alerted
});

我想对这些数据做什么是将它传递给mysql,所以我想最终json_decode它所以我可以使用某些数据

if(isset($_POST['cats'])){
// It doesnt' even pass through here?
}

3 个答案:

答案 0 :(得分:1)

试试这个:

var cats = $('div').data('categories');
alert(cats); // this alerts object object

$.ajax({ //json data for categories
    url: 'saving.php',
    type: 'post',
    dataType: 'json',
    data: {
        cats : cats
        },
    }).done(function(data){
    alert(data); //this does not get alerted
});

答案 1 :(得分:1)

使用单引号而不是双引号:

<div data-categories='[[{"id":"4123","name":"Sushi Restaurant","pluralName":"Sushi Restaurants","shortName":"Sushi"}]]'>
</div>

此外,您无法将对象与字符串连接,值变为:

"cats=[object Object]"

由于您使用的是POST方法,因此您应编写代​​码:

data: {
    cats: cats
}

答案 2 :(得分:0)

如果没有收到警报,则无法返回任何内容。这可能是因为服务器错误。您可能希望在浏览器上打开控制台,看看AJAX调用是否有任何问题