0

GET を使用してデータベースからデータを取得しようとしています。ただし、複数の値を送信すると、クエリ文字列が切り捨てられるため、最初の値のみが表示されます。つまり、somepage.com/file.php?val1=v1&val2=v2 を送信してから $SERVER['QUERY STRING'] を使用すると、"val1=v1&" になるため、2 番目のパラメーターが失われます。

コードの重要な部分は次のとおりです

Javascript:

<script type="text/javascript">
function showUser(degreecourse, interest, gradyear)
{
    var xmlhttp = new XMLHttpRequest();
        xmlhttp.open('GET',"/getcandidates.php?degreecourse="+ encodeURIComponent(degreecourse) + "&interest=" + encodeURIComponent(interest) + "&gradyear=" + encodeURIComponent(gradyear), false);
xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 || xmlhttp.status==200)
      {
      document.getElementById("info").innerHTML=xmlhttp.responseText;
      }
     else {
              document.getElementById("info").innerHTML="Error";
          }
  }
     xmlhttp.send();
return false;   }

PHP

$degreecourse=$_GET['degreecourse'];
$interest=$_GET['interest'];
$gradyear=$_GET['gradyear'];
$fullstring = $_SERVER["QUERY_STRING"];

echo $fullstring."\n";
echo "Args = Degree - ".$degreecourse." Interest - ".$interest." Year - ".$gradyear."\n";

出力

degreecourse=Computer%20Science&
Args = Degree - Computer Science Interest - Year - 

&s で encodeURIComponent を使用しようとしましたが、その結果、$GETs が文字列を正しく分割しないため、このような結果になります。

degreecourse=Biomedical%20Sciences%26%23038%3Binterest%3DAny%26%23038%3Bgradyear%3D2013
Args = Degree - Biomedical Sciences&interest=Any&gradyear=2013 Interest - Year -   
4

0 に答える 0