1

URLのクエリ文字列を作成していて、エンコードから特定の文字を除外する必要があります。

「&」と「=」を除外して、次のようにステートメントを作成できるようにします。

first = blah&second=blahなど...

私はそれを置くための最良の方法は、それらがエンコードされないようにするにはどうすればよいと思いますか?

いくつかのコード:

 else if (array[i].nodeName == "SELECT") {
   if (array[i].id == "multiple") {
     var selected = $.map($('#multiple option:selected'),

     function (e) {
       return $(e).val();
     });
     $.each(selected, function (index, value) {
       name = array[i].name;
       values += app + "\&" + key + "=";
     });

   } else {
     name = arr[i].name;
     values = arr[i].value;
   }
 }

 key = encodeURIComponent(name);
 value = encodeURIComponent(values);
 queryString += name + "=" + values + "&";
4

2 に答える 2

1

特定の文字を除外する方法はありencodeURIComponentますか?

いいえ。これは、引数を1つだけ取る組み込み関数です。


キーまたは値の途中に表示される場合はエンコードする必要がある&ため、最も簡単な解決策は、個々の名前と値を組み合わせる前にエンコードすることです。定義

function emit(name, value) {
  queryString += (queryString.indexOf("?") >= 0 ? "&" : "?")
    + encodeURIComponent(name) + "=" + encodeURIComponent(value);
}

次に、複数の選択で名前と値のペアごとに、またはチェックされた入力ごとに1回、その関数を呼び出します。

else if (array[i].nodeName=="SELECT" ){
  if(array[i].id == "multiple"){
    var selected = $.map( $('#multiple option:selected'),
                          function(e){return $(e).val();});
    $.each(selected, function(index, value){
             emit(array[i].name, value);
           });
  } else {
    emit(arr[i].name, arr[i].value);
  }
}

または同様のものを使用すると、またはその他の必要なコードポイントencodeURIが適切にエンコードされません。#=

于 2012-07-12T17:27:27.810 に答える
0

関数の名前は、その使用方法を示している必要があります。クエリ文字列全体ではなく、クエリ文字列の一部で関数を呼び出します。

編集—私はあなたのコードに基づいて例を作成しようとしましたが、それが何をしようとしているのか理解できません。現状では、構文エラーがあるようです。

于 2012-07-12T17:27:14.510 に答える