Php jQuery通过ajax post传递数组
我试图通过ajax post传递4条数据(3个文本字符串和1个多维文本字符串数组)。当我发出ajax请求时,我只能检索3个文本字符串,而不能检索数组。这是我的函数,包含ajax请求Php jQuery通过ajax post传递数组,php,jquery,ajax,arrays,Php,Jquery,Ajax,Arrays,我试图通过ajax post传递4条数据(3个文本字符串和1个多维文本字符串数组)。当我发出ajax请求时,我只能检索3个文本字符串,而不能检索数组。这是我的函数,包含ajax请求 function page_load(page_num, prev_page, next_page, form_arr) { $.ajax({ type: 'post', cache: false, url: 'page_content.php',
function page_load(page_num, prev_page, next_page, form_arr)
{
$.ajax({
type: 'post',
cache: false,
url: 'page_content.php',
data: {'page_num' : page_num,
'prev_page': prev_page,
'next_page': next_page,
'form_arr' : form_arr
}
}).done(function(data){
$('#main_content').empty().html(data);
});
}
当函数被执行时,所有数据(应该)都被传递到“page_content.php”,在这里我拉取form_arr参数(没有成功)
我已经确认数组创建正确,并成功地传递给“page_load”函数(我已经能够在函数中循环数组,并警告每个字符串)。如果我将“form_arr”变量更改为一个字符串,而不是数组,在函数之外,我可以提取它,就像其他3个参数一样
这有什么我遗漏的吗
这是我的整个js文件
function page_load(page_num, prev_page, next_page, form_arr)
{
$.ajax({
type: 'post',
cache: false,
url: 'page_content.php',
data: {'page_num' : page_num,
'prev_page': prev_page,
'next_page': next_page,
'form_arr' : JSON.stringify(form_arr)
}
}).done(function(data){
$('#main_content').empty().html(data);
});
}
不能将javascript概念发送到PHP代码。实际上,一般来说,您只能将字符串从客户端发布到服务器 最聪明的方法是用JSON编码:
$form_arr = json_decode($_POST['form_arr'],true);
然后在PHP中将其解码为PHP数组@
什么是数组格式?显示一个示例检查浏览器控制台。我已经包含了完整的JS文件(附加在我的初始问题下面)。我还发现了问题(以及解决方案)。我将一系列关联数组推到一个数字数组,然后尝试将其字符串化(这不起作用,因为该方法忽略了关联数组)。谢谢大家的帮助。
$(document).ready(function()
{
//initial page load
var page_num = 'start';
var prev_page = 0;
var next_page = 1;
var form_arr = new Array();
var form_element = new Array();
form_element['name'] = 'TAG NAME';
form_element['value'] = 'N/A';
form_arr.push(form_element);
page_load(page_num, prev_page, next_page, form_arr);
//START button click event handler
$('#main_content').delegate('a.button', 'click', function(e)
{
var btn_id = $(this).attr('href');
if(!$(this).hasClass('disabled')){
//call button_click function
button_click($(this), btn_id);
}
e.preventDefault();
});
//END button click event handler
$('#main_content').delegate('form', 'submit', function(e){
e.preventDefault();
});
//START "other" option select from dropdown
$('#main_content').delegate('select.dropdown', 'change', function(e)
{
var selected = $(this).find("option:selected");
var target = $(this).children('option.trigger').attr('class').replace('trigger ', '');
if(selected.hasClass('trigger'))
{
$('.hidden_view.' + target).show();
}else
{
$('.hidden_view.' + target).hide();
}
});
//END "other" option select from dropdown
/*** FUNCTIONS ***/
//START button_click function
function button_click(btn_obj, btn_id)
{
//set next and previous page values
var page_num = parseInt(btn_id);
var prev_page = page_num - 1;
var next_page = page_num + 1;
/* START LOOP THROUGH FORM AND PULLING VALUES */
var form = btn_obj.parent();
var form_arr = form_element_loop(form);
page_load(page_num, prev_page, next_page, form_arr);
}
//END button_click function
//START page_load function
function page_load(page_num, prev_page, next_page, form_arr)
{
var ajaxData = JSON.stringify(form_arr);
$.ajax({
type: 'post',
cache: false,
url: 'page_content.php',
data: {'page_num' : page_num,
'prev_page': prev_page,
'next_page': next_page,
'form_arr' : ajaxData}
}).done(function(data){
$('#main_content').empty().html(data);
});
}
//END page_load function
//START form_element_loop function
function form_element_loop(form)
{
var form_arr = new Array();
var x = 0;
$(form).children().each(function()
{
var element_tag = $(this).prop('tagName').toLowerCase();
if(element_tag == 'section' || element_tag == 'article' || element_tag == 'div')
{
if($(this).is(':visible'))
{
$(this).children().each(function(){
var element_tag = $(this).prop('tagName').toLowerCase();
var form_element = form_element_switch($(this));
});
}
}else
{
var form_element = form_element_switch($(this));
}
if(form_element.length > 0)
{
form_arr[x] = form_element;
}
x++;
});
return form_arr;
}
//END form_element_loop function
function form_element_switch(form_obj, form_tag)
{
var form_element = new Array();
switch(form_obj.prop('tagName').toLowerCase())
{
case 'a':
break;
case 'label':
break;
case 'input':
form_element['name'] = form_obj.attr('name');
form_element['value'] = form_obj.val();
break;
case 'select':
form_element['name'] = form_obj.attr('name');
form_element['value'] = form_obj.find(':selected').text();
break;
}
return form_element;
}
});
function page_load(page_num, prev_page, next_page, form_arr)
{
$.ajax({
type: 'post',
cache: false,
url: 'page_content.php',
data: {'page_num' : page_num,
'prev_page': prev_page,
'next_page': next_page,
'form_arr' : JSON.stringify(form_arr)
}
}).done(function(data){
$('#main_content').empty().html(data);
});
}
$form_arr = json_decode($_POST['form_arr'],true);