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

man*_*ril 5 javascript php arrays jquery 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,'_blank'); 
    }else{
        var para=[];
        var paraelements={
          para1:'anotherpara1'||0,
          para2:'anotherpara2'||0
        };
        para[0]=paraelements;
        window.open('somePDFView/'+para,'_blank'); 
    }
}
Run Code Online (Sandbox Code Playgroud)

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

somePDFView/[object Object]
Run Code Online (Sandbox Code Playgroud)

这显示错误:

所提交的网址带有不被接受的字符

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

编辑:

我想念一个重要的事情,我正在使用codeigniter.然后我认为它不允许使用特殊字符,如 - &,=,[,]等.如果有任何其他方法可用于将数据作为数组发送?

Siv*_*iva 8

要通过URL从Javascript向PHP/Codeigniter发送一系列参数,您需要执行以下两个步骤:

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

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

现在,您可以通过$ params访问控制器中的所有参数.

您的代码块变为:

function viewReport(mode,someid){
    if(mode==0){
        var para= new Array();
        para['para1'] = 'para1'||0;
        para['para2']= 'para2' || 0;
        console.log(para);
        para = JSON.stringify(para);
        window.open('somePDFView?params='+para,'_blank'); 
    }else{
        var para=[];
        var paraelements={
          para1:'anotherpara1'||0,
          para2:'anotherpara2'||0
        };
        para[0]=paraelements;
        para = JSON.stringify(para);
        window.open('somePDFView?params='+para,'_blank'); 
    }
}

试试这个,让我知道你是否仍然面临这个问题.


rad*_*uns 6

你也可以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'); 
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是php,请使用json_decode()将json转换为PHP变量.另请参阅 http://php.net/manual/en/function.json-decode.php