Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在javascript/jQuery中通过url发送数组_Php_Javascript_Jquery_Arrays_Codeigniter - Fatal编程技术网

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

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,

我试图通过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'); 
    }
}
上,如果部分(模式=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,需要执行两个步骤:

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

  • 在控制器上解码查询字符串param(即JSON字符串)
    $params=json_decode($u 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'); } } 函数视图报告(模式,someid){ 如果(模式==0){ var para=新数组(); 第['para1']=“para1”| | 0; 第['para2']=“para2'| | 0; 控制台日志(第2段); para=JSON.stringify(para); window.open('somePDFView?params='+para,''u blank'); }否则{ var para=[]; 副元素变量={ para1:“另一个para1”| | 0, para2:“另一个para2”| | 0 }; para[0]=副元素; para=JSON.stringify(para); window.open('somePDFView?params='+para,''u blank'); } }
    尝试一下,如果您仍然面临此问题,请告诉我。

    您可能需要使用或对其进行编码。但我认为URL有发送变量的最大长度,所以不要太长。序列化?k我会研究一下并尝试一下…不要使用带有非数字键的数组!我想你应该先研究一下为什么
    string+array
    会产生奇怪的结果。。。(提示:当你把一辆汽车和一个苹果结合在一起时会发生什么?)它也会显示错误——你提交的URI包含不允许的字符。使用console.log(json)并在通过url发送之前检查返回的数据。数据分配正确,json包含所有值,但无法发送。您是否使用查询字符串发送数据?抱歉,我错过了一件重要的事情。我使用codeigniter,因此我认为它不允许使用特殊字符,如&、=、[,]。是吗?现在我可以看到url上的参数--salexepdfview/parat[]=1¶t[]=2,但它显示您提交的URI包含不允许的字符。我删除了
    parat[]
    =
    符号之间的空格。现在应该可以了,你不能这样做。看看这个或者。