我的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
值
答案 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