Как вы публикуете, используя jquery связанный массив внутри и массив в скрипт php для обработки - PullRequest
1 голос
/ 19 февраля 2011

Я получаю данные из API через XML, который содержит данные о каждом пользователе веб-сайта.Мне нужно в конечном итоге сохранить эти данные в базе данных MySQL.Я анализирую данные и получаю значения для каждого пользователя, используя jquery.

Я нахожу узлы для каждого пользователя примерно так

$onlineid = $(this).find("onlineid");
$comment = $(this).find("comment");

, а затем получаю значения ..

var onlineid = $onlineid.text();
var comment = $comment.text();

Вот где я сейчас застрял ...

Мне нужно создать связанный массив данных пользователей, а затем добавить данные каждого пользователя в массив пользователей, чтобы их можно было обрабатывать.используя php, затем сохраняется в mysql.

может быть что-то вроде этого ..?

var users =  new Array();
var user_data =  new Object();
user_data['onlineid'] = onlineid;
user_data['comment'] = comment;

затем ..

users.push(user_data);

Кажется, что создается массив объектов.Если я отправлю их в скрипт php, используя ajax

$.ajax({ <br /> type: "POST",<br /> url: "sync.php",<br /> data: 'users='+users

, то firebug покажет их как строку объектов, разделенных запятыми.

Как же яиметь дело с этим в сценарии php?

Мне нужно обработать каждый объект (user_data) в каждом из элементов массива (пользователей), чтобы значения могли быть сохранены в базе данных mysql.

Любой экспертный совет будет фантастическим.

Ответы [ 5 ]

1 голос
/ 19 февраля 2011

вы разбиваете «строку объекта, разделенного запятыми» на куски в PHP, используя explode:

$users_array = explode(",",$users);
0 голосов
/ 19 февраля 2011

Оформить заказ Гист . Это расширяет ответ @ picus.

0 голосов
/ 19 февраля 2011

Я бы передал данные в виде строки с кодированием JSON :

var users = [];

// in a loop:

users.push({onlineid: $(this).find("onlineid").text(), 
           comment: $(this).find("comment").text()});

// ajax request:

$.ajax({ 
    type: "POST",
    url: "sync.php",
    data: {users: JSON.stringify(users)} // automatic HTTP encoding

Объект JSON либо встроен, либо доступен с помощью этого сценария .

В PHP используется json_decode:

$users = json_decode($_POST['users'], true);
0 голосов
/ 19 февраля 2011

Я не использую PHP, но я бы создал объект javascript, состоящий из одного поля / свойства userid и другого поля / свойства, которое содержит простой массив комментариев для этого пользователя (это позволяеткомментарии на пользователя).Затем я бы создал контейнер для хранения всех этих объектов, либо простого (числовое смещение) массива, либо ассоциативного массива, используя идентификатор пользователя (в виде строки) в качестве ключа.Затем я JSONify целого комплекта и Caboodle и отправлять JSON-кодированную строку на сервер, где она будет декодироваться из формата JSON обратно в объекты, с которыми сервер может работать.PHP, безусловно, предлагает несколько вспомогательных методов, чтобы сделать это легко.Я бы искал "PHP JSON".

0 голосов
/ 19 февраля 2011

Вы можете попробовать разобрать их в список значений в qs, который выглядит следующим образом:

? Users [] = user1 & users [] = user2 & users [] = user3

Это должно дать вам массив с именем users, который является частью запроса POST для вашей PHP-страницы:

print_r($_POST['users']);

выведет:

user1, user2, user3
...