5

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'); 
    }
}

では、para 配列はこれif part(mode=0)以上送信されず、else part ( mode=1) では、para は次のように送信されます。

somePDFView/[object Object]

次のエラーが表示されます。

あなたが提出されたURIは、許可されていない文字が含まれています

URL 経由で配列を送信するにはどうすればよいですか。Ajax (ポップアップ ウィンドウであるため) やセッションを使用したり、一時テーブルに格納したりすることはできません。また、コントローラーでこの値を取得する方法も教えてください。

編集:

codeigniter を使用しているという重要なことを見逃しています。次に、- &、=、[、] などの特殊文字を許可しないと思います。データを配列として送信するために利用できる他の方法がある場合は..

4

4 に答える 4

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'); 
  }
}

php を使用json_decode()している場合は、json を PHP 変数に変換するため に使用します。 http://php.net/manual/en/function.json-decode.phpも参照してください。

于 2013-08-24T10:12:12.457 に答える
3

それらを個別のパラメーターとして渡すことができます。

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

于 2013-08-24T10:03:48.087 に答える
2

jQuery.param()を使用してデータ構造を変更します。

var para = {
    para1:'anotherpara1'||0,
    para2:'anotherpara2'||0
};

window.open('somePDFView/'+jQuery.param(para), '_blank'); 

デモjsFiddle

于 2013-08-24T10:11:47.793 に答える