-1

我有一个值数组,并且我已经转换为 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?
}
4

3 回答 3

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
});
于 2013-02-22T23:14:00.537 回答
1

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

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

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

"cats=[object Object]"

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

data: {
    cats: cats
}
于 2013-02-22T23:17:43.133 回答
0

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

于 2013-02-22T23:13:17.130 回答