массив javascript для php - PullRequest
       3

массив javascript для php

2 голосов
/ 26 января 2010

Я хочу отправить массив javascript в php, используя jquery ajax.

$.post("controllers/ajaxcalls/users.php",
{
    links: links
});

где вторые 'ссылки' - это массив javascript.

когда я получу этот массив:

'1' ...
    '1' => "comment1"
    '2' => "link1"
    '3' => "link2"
    '4' => "link3"
'2' ...
    '1' => "comment2"
    '2' => "link4"

затем используя:

var jsonLinks = JSON.stringify(links);
alert(jsonLinks);

даст мне:

[null,[null,"comment1","link1","link2","link3"],[null,"comment2","link4"]]

мне кажется, что что-то не так. Что такое null: s, и я не могу использовать json_decode на стороне php для получения элементов.

Какую функцию я должен использовать, чтобы преобразовать его в JSON и как мне получить доступ к нему на стороне PHP?

попробовал это http://code.google.com/p/jquery-json/, но он даст тот же вывод, что и JSON.stringify () (они также говорят, что в документации).

боролся с этим уже через несколько часов ... был бы признателен за КОНКРЕТНУЮ помощь.

я просто хочу отправить массив из javascript в php ... почему это так чертовски сложно: /

Ответы [ 3 ]

2 голосов
/ 26 января 2010

Отвечая на часть null , массивы JavaScript являются числовыми и основаны на нуле:

>>> var foo = [];
>>> foo[5] = 'Five';
"Five"
>>> foo
[undefined, undefined, undefined, undefined, undefined, "Five"]

Напротив, PHP позволяет пропускать (и смешивать) ключи:

<?php

$foo = array();
$foo[5] = 'Five';
print_r($foo);

?>

Array
(
    [5] => Five
)

Если вы хотите использовать массивы, я предлагаю вам сделать их с нуля и предотвратить пропущенные значения. В противном случае вы могли бы вместо этого использовать объекты.

2 голосов
/ 26 января 2010

Существует несколько плагинов jQuery, которые могут кодировать в JSON (и декодировать из JSON) .


Например, вы можете взглянуть на jquery-json (цитирование) :

Этот плагин предоставляет четыре новые функции на объект $ или jQuery:

  • toJSON: Сериализует объект javascript, номер, строку или массив в JSON.
  • evalJSON: быстро преобразует из JSON в Javascript и является тривиальным.
  • secureEvalJSON: конвертирует из JSON в Javascript, но делает это пока проверка, если источник на самом деле JSON, а не с другими Добавлены утверждения Javascript.
  • quoteString: ставит кавычки вокруг строки и разумно избегает любых цитата, обратная косая черта или контроль символы.
1 голос
/ 26 января 2010

Я не уверен, как вы пытаетесь прочитать это в своем скрипте PHP, но если это связано с тем, что у вас есть массивы на основе 1, а не массивы на основе 0, то в javascript вы можете удалить нули (ноль)элемент) с:

var jsonLinks = JSON.stringify(links.slice(1)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...