使用PHP内部数组解析数组

时间:2013-12-05 13:18:47

标签: javascript php arrays post

我的JS中有数组,我必须将其解析为PHP:

var transfer_data = {
            cl_name : $("#free_1_1_title").val(),
            contact_name : $("#free_1_1_name").val(),
            contact_lastname : $("#free_1_1_lastname").val(),
            contact_email : $("#free_1_1_email_1").val(),
            cl_alley : $("#free_1_1_select_1").val(),
            cl_services : $("#free_1_1_select_2").val(),
            cl_tags : {
                1 : $("classified_tag_1").val(),
                2 : $("classified_tag_2").val(),
                3 : $("classified_tag_3").val(),
                4 : $("classified_tag_4").val(),
                5 : $("classified_tag_5").val()
            }
        };

和转移:

$.ajax({
            url: "classifieds/add_new/addNewCl_1_1",
            type: 'POST',
            dataType: 'json',
            data: transfer_data, 
            success: function(data) { 
                  console.log(data.response);
            },
            error: function (e) {
                console.log(e.message);
            }
        });

我希望像那样收到它:

Array
(
    [cl_name] => value
    [contact_name] => value
    [contact_lastname] => value
    [contact_email] => value
    [cl_alley] => value
    [cl_services] => value
    [cl_tags] => array(1 => value, 2 => value...)
)

那我应该怎么做呢?我尝试使用print_r($_POST);

打印接收数据

我只有

Array
(
    [cl_name] => value
    [contact_name] => value
    [contact_lastname] => value
    [contact_email] => value
    [cl_alley] => value
    [cl_services] => value
)

我错过了我的cl_tags

2 个答案:

答案 0 :(得分:2)

像这样推送数组并不是一个好主意。

JSON.stringify :它将js对象转换为json对象。

这样做。

step1.Create array/object.

step 2.JSON.stringify(array) to encode your array in JavaScript,

step 3.$array=json_decode($_POST['jsondata']);//in your php

还有一件事:

您无法为javascript对象提供数字键。

例如:

var object = {
 1:"wrong_way",
'1':true,
'alphabetic_key':"ideal";//boolean or number or string are valid as value.
}

<强>更新

如评论中所述:

使用数字作为对象键并不是最好的惯例。但如果你这样做,那么javascript引擎会在幕后将它们转换为字符串。

但是在访问这些对象时你必须要小心。

Object.'1';//valid
object.1;//invalid
object[1];//valid

答案 1 :(得分:1)

您需要在js

中更改变量名称

所以工作代码如下:

var data = {
    q:1, 
    'w[]': [1,3,4,5,7],
    'e[t1]': 1,
    'e[t2]': 2,
    'e[t3]': [1,2,3,4,5]
}
$.ajax({url:'/', type: 'POST', data: data});

在chrome调试中,我们看到如下:

q:1
w[]:1
w[]:3
w[]:4
w[]:5
w[]:7
e[t1]:1
e[t2]:2
e[t3][]:1
e[t3][]:2
e[t3][]:3
e[t3][]:4
e[t3][]:5