Php 如何在javascript/jQuery中通过url发送数组
我试图通过url发送javascript数组,但失败了Php 如何在javascript/jQuery中通过url发送数组,php,javascript,jquery,arrays,codeigniter,Php,Javascript,Jquery,Arrays,Codeigniter,我试图通过url发送javascript数组,但失败了 function viewReport(mode,someid){ if(mode==0){ var para= new Array(); para['para1'] = 'para1'||0; para['para2']= 'para2' || 0; console.log(para); window.open('somePDFView/'+para,
function viewReport(mode,someid){
if(mode==0){
var para= new Array();
para['para1'] = 'para1'||0;
para['para2']= 'para2' || 0;
console.log(para);
window.open('somePDFView/'+para,'_blank');
}else{
var para=[];
var paraelements={
para1:'anotherpara1'||0,
para2:'anotherpara2'||0
};
para[0]=paraelements;
window.open('somePDFView/'+para,'_blank');
}
}
在上,如果部分(模式=0)
,则para数组不再发送任何内容,而在其他部分(模式=1)
)上,则
段落是这样发送的:
somePDFView/[object Object]
这显示了错误:
您提交的URI包含不允许的字符
我们如何通过url发送数组。我不能使用Ajax(因为它是一个弹出窗口)、会话或存储在临时表中。我们如何在控制器中检索此值
编辑:
我错过了一件重要的事情,我正在使用codeigniter。然后我认为它不允许使用特殊字符,如-&、=、[、]等。因此,如果有任何其他方法可用于以数组形式发送数据?。您可以尝试将它们作为单个参数传递:
var para1 = '1';
var para2 = '2';
var para= new Array();
para.push('para[]=' + para1 || 0);
para.push('para[]=' + para2 || 0);
var url = para.join('&');
alert(url)
返回para[]=1和para[]=2
。请注意,此解决方案不需要jQuery
使用并更改数据结构:
var para = {
para1:'anotherpara1'||0,
para2:'anotherpara2'||0
};
window.open('somePDFView/'+jQuery.param(para), '_blank');
您也可以在此处使用
Json
。使用JSON.stringify()
注意:
不要通过URL发送长数据。通过url发送数据有一个限制,如果超过该限制,将导致数据损坏。对于大数据,请使用POST
方法
function viewReport(mode,someid){
var json;
if(mode==0){
var para= new Array();
var paraelements={
para1:'para1'||0,
para2:'para2'||0
};
para[0]=paraelements;
json = JSON.stringify(para);
window.open('somePDFView/'+json,'_blank');
}else{
var para=[];
var paraelements={
para1:'anotherpara1'||0,
para2:'anotherpara2'||0
};
para[0]=paraelements;
json = JSON.stringify(para);
window.open('somePDFView/'+json,'_blank');
}
}
如果您使用的是php,请使用json\u decode()
将json转换为php变量。另请参阅,
要通过URL将参数数组从Javascript发送到PHP/Codeigniter,需要执行两个步骤:
para=JSON.stringify(para)代码>
window.open('somePDFView?params='+para,''u blank')代码>
$params=json_decode($u GET['params'])代码>
尝试一下,如果您仍然面临此问题,请告诉我。您可能需要使用或对其进行编码。但我认为URL有发送变量的最大长度,所以不要太长。序列化?k我会研究一下并尝试一下…不要使用带有非数字键的数组!我想你应该先研究一下为什么
string+array
会产生奇怪的结果。。。(提示:当你把一辆汽车和一个苹果结合在一起时会发生什么?)它也会显示错误——你提交的URI包含不允许的字符。使用console.log(json)并在通过url发送之前检查返回的数据。数据分配正确,json包含所有值,但无法发送。您是否使用查询字符串发送数据?抱歉,我错过了一件重要的事情。我使用codeigniter,因此我认为它不允许使用特殊字符,如&、=、[,]。是吗?现在我可以看到url上的参数--salexepdfview/parat[]=1¶t[]=2,但它显示您提交的URI包含不允许的字符。我删除了parat[]
和=
符号之间的空格。现在应该可以了,你不能这样做。看看这个或者。