Как вы формируете массив в объекте JSON для строки запроса? - PullRequest
0 голосов
/ 24 сентября 2010

При отправке массива в объекте JSON в строке запроса каждый элемент массива должен иметь одинаковый ключ?Например, если у меня есть этот объект JSON:

{"sodas[]": ["coke", "sprite", "fanta"]}

Должна ли строка запроса выглядеть так, чтобы все ключи были одинаковыми (sodas%5B%5D)?

sodas%5B%5D=coke&sodas%5B%5D=sprite&sodas%5B%5D=fanta

Илидолжны ли строки запроса иметь индексное значение или что-то в этом роде (sodas%5B0%5D, sodas%5B1%5D и т. д.)?

sodas%5B0%5D=coke&sodas%5B1%5D=sprite&sodas%5B2%5D=fanta

1 Ответ

1 голос
/ 26 сентября 2010

Первое утверждение без квадратных скобок для ключа "sodas" будет работать.Я не уверен, какие языки вы используете, но вот пример с HTML, jQuery и PHP.

HTML (file: y.html)


<!DOCTYPE html>
<html>
<head>
<title>XYZ</title>
<script
  type="text/javascript"
  src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<input type="button" id="send" value="Send">
<hr noshade>
<div id="output"></div>
<script type="text/javascript">
var $output = $('#output');
$('#send').click(function(e){
  e.preventDefault();
  var $json = '{"sodas":["coke","pepsi","fanta"]}';
  $.ajax({url:"/so/y.php",type:"post",dataType:"html",data:'json='+escape($json),
    success:function(obj){
      $output.html(obj);
    }
  });
});
</script>
</body>
</html>

Выход из JavaScript () функция отформатировала параметр JSON POST следующим образом (взято из Firebug.)

json=%7B%22sodas%22%3A%5B%22coke%22%2C%22pepsi%22%2C%22fanta%22%5D%7D

PHP (файл: y.php)


<?php
$json = json_decode(stripslashes($_POST['json']));
var_dump($json);

В выводе браузера отображается var_dump () 'd строковое представление объекта PHP, ассоциативный массив с одним ключом, значение которого представляет собой массив трех марок соды.

object(stdClass)#1 (1) { ["sodas"]=>  array(3) { [0]=>  string(4) "coke" [1]=>  string(5) "pepsi" [2]=>  string(5) "fanta" } } 
...