你如何使用jquery内部的关联数组和数组发布到PHP脚本进行处理

时间:2011-02-19 16:16:34

标签: php jquery ajax arrays multidimensional-array

我通过xml从api获取数据,其中包含有关网站每个用户的数据。 我需要最终将这些数据保存到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);

这似乎构建了一个对象数组。 如果我使用ajax

将它们发布到php脚本中

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

firebug将它们显示为以逗号分隔的对象字符串。

我如何处理php脚本中的内容?

我基本上需要处理每个数组项(用户)中的每个对象(user_data),以便可以将值保存到mysql数据库中。

任何专家建议都会很棒。

5 个答案:

答案 0 :(得分:1)

使用explode将“用逗号分隔的一串对象”拆分为PHP:

$users_array = explode(",",$users);

答案 1 :(得分:0)

您可以尝试将它们解析为qs中的值列表,如下所示:

用户[] = USER1&安培;用户[] = USER2与使用者[] =用户3

这应该为您提供一个名为users的数组,它是PHP页面的POST请求的一部分:

print_r($_POST['users']);

会输出:

user1, user2, user3

答案 2 :(得分:0)

我不使用PHP,但我要做的是创建一个javascript对象,该对象由单个userid字段/属性和另一个字段/属性组成,该字段/属性包含该用户的简单注释数组(这允许多个每个用户的评论)。然后我创建一个容器来容纳所有这些对象,使用userid(作为字符串)作为键,使用简单(数字偏移)数组或关联数组。然后我将整个kit-and-caboodle JSONify并将JSON编码的字符串发布到服务器,在那里它将从JSON格式解码回服务器可以使用的对象。 PHP肯定会提供一些帮助方法来简化这一过程。我会搜索“PHP JSON”。

答案 3 :(得分:0)

我会将数据作为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 object内置或可用via this script

在PHP中使用json_decode

$users = json_decode($_POST['users'], true);

答案 4 :(得分:0)

结帐gist。它扩展了@picus的答案。