如何通过javascript/jQuery中的url发送数组


How to send an array via the url in javascript/jQuery

我正试图通过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,'_blank'); 
    }else{
        var para=[];
        var paraelements={
          para1:'anotherpara1'||0,
          para2:'anotherpara2'||0
        };
        para[0]=paraelements;
        window.open('somePDFView/'+para,'_blank'); 
    }
}

if part(mode=0)上,para数组不再发送,而在其他部分(mode=1)para是这样发送的:

somePDFView/[object Object]

显示错误:

您提交的URI包含不允许的字符

我们如何通过url发送数组。我不能使用Ajax(因为它是一个弹出窗口)、会话或存储在临时表中。此外,我们如何在控制器中检索此值。

编辑:

我错过了一件重要的事情,我正在使用代码点火器。然后我认为它不允许像-&,=,[,]等。。那么,如果有其他方法可以作为数组发送数据?。。

要通过URL将参数数组从Javascript发送到PHP/Codeigniter,需要执行两个步骤:

  1. 将params数组转换为JSON字符串,并将其作为单个查询参数发送。
    para = JSON.stringify(para);
    window.open('somePDFView?params='+para,'_blank');

  2. 在控制器上解码查询字符串参数(即JSON字符串)
    $params = json_decode($_GET['params']);

现在,您可以通过$params访问控制器上的所有params。

您的代码块变为:

函数视图报表(mode,someid){如果(模式==0){var para=new Array();para['para1']='para1'||0;para['para2']='para2'||0;console.log(第段);para=JSON.stringfy(para);window.open('somePDFView?params='+para,'_blank');}其他{var para=[];var paraelements={para1:'其他para1'||0,para2:'其他para2'||0};para[0]=paraelements;para=JSON.stringfy(para);window.open('somePDFView?params='+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_decode()将json转换为php变量。另请参阅,http://php.net/manual/en/function.json-decode.php

您可以尝试将它们作为单独的参数传递:

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

使用jQuery.param()并更改您的数据结构:

var para = {
    para1:'anotherpara1'||0,
    para2:'anotherpara2'||0
};
window.open('somePDFView/'+jQuery.param(para), '_blank'); 

演示jsFiddle