javascript
2017-01-03 4 views -1 likes 
-1

複数のGETリクエストでURL内のアンパサンドのため%26または%のアンプを使用することができません

URL文字列は、私も

を試してみました

'submit.php?p='+precision+'&r='+recall+'&a='+accuracy; 

ある

 document.writeln("<form name='statistics' action='submit.php?p='+precision+'&amp;r='+recall+'&amp;a='+accuracy; onsubmit='return validateForm()' method='get'>") 
     document.writeln("<button style = 'font-size: 32px; float : right'class = 'button' > See results </button>") 
     document.writeln("</form>") 

を次のように私のURLは

'submit.php?p='+precision+'%26r='+recall+'%26a='+accuracy; 

しかし、どちらもブラウザにアンパサンドを与えません。

次のように私は両方のケースのための私のブラウザで取得するURLは -

http://localhost/WT2ASST1/submit.php?p=1r=0.4a=0.4 

私は、フォームの送信とURLに関しては、他の関連するコードを追加していません。

私のURLにアンパサンドを得るには何が必要ですか?

答えて

0

不適切な文字列連結を使用しています。 これは動作するはずです:

document.writeln("<form name='statistics' action='submit.php?p="+precision+"&amp;r="+recall+"&amp;a="+accuracy+"' onsubmit='return validateForm()' method='get'>"); 
document.writeln("<button style = 'font-size: 32px; float : right'class = 'button' > See results </button>"); 
document.writeln("</form>"); 

注意を:あなたは文字列を連結したい場合は、例えば、正しい文字列の区切り文字を使用する必要があります「テスト」+ VAR +「テスト」 ない「テスト 『+ VAR +』テスト」

0

これは(それは私のためにやった)あなたに

document.writeln("<form name='statistics' action='submit.php?p='+precision+'&amp;r='+recall+'&amp;a='+accuracy; onsubmit='return validateForm()' method='get'>") 

をアンパサンドを与える必要があります。しかし、全体のことは、二重引用符でありますしたがって+は演算子ではなくリテラル文字列になります。後者の場合は、エンコードされたURLがあります。 Document.writeはそれらをあなたのために魔法のようにデコードしません。 decodeURI関数を使用することもできますが、最初に "&"というリテラルを使用する場合は同じになります。

最初の方法を使用しますが、二重引用符を使用して、各文字列の終了位置と変数を連結する場所を指定します。同様に

簡単な注記:GET変数を分離する目的でアンパサンドを使用しない場合は、アンパサンドのみをエンコードします。それはあなたがそれらをどのように使用しているかです。それらをエンコードすると、サーバーが混乱する可能性があります。

関連する問題