MySQLの結果に基づいてドロップダウンリストを更新するためにJavaScriptを使用しているPHPページがあります。私の問題は、JavaScript変数を介して顧客名を渡すと、最初の空白が途切れるということです。例:「HomeDepot」は「Home」と表示され、「TheHomeStore」は「The」と表示されます。適切なクエリを実行するために、文字列全体を渡したいと思います。
これが私のフォームからの関連コードです:
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCustCont(cID)
{
var strURL="Includes/cdd.php?custid="+cID;
var req = getXMLHTTP();
if (req)
{
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
// only if "OK"
if (req.status == 200)
{
document.getElementById('Contdiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
//VARIABLES DEFINED AND START OF FORM
<td width="60%">
<select name="Customer" onchange="getCustCont(this.value)">
<option value="SAC">Select Customer</option>
<?php
$i=0;
while ($i < $num) {
$Name=mysql_result($result,$i,"Name");
echo "<option value=$Name>$Name</option>";
$i++;
}
?>
</select>
</td>
cdd.phpファイルには次のものが含まれています。
<?
$Cust_ID = $_GET['custid'];
include('../Includes/TrackingDB.php');
mysql_connect($dbhost,$dbuser,$dbpass) or die('Error connecting to mysql');
mysql_select_db($dbdb) or die('Error connecting to database');
$query="SELECT t1.ContName FROM Cust_Contacts t1 INNER JOIN Customer_Listing t2 ON t1.Cust_ID = t1.Cust_ID WHERE t2.Name = '$Cust_ID'";
$result=mysql_query($query);
mysql_close();
echo var_dump($Cust_ID); //I added this solely for the purposes of trouble shooting this issue. This is where I am seeing the truncated string.
?>
<select name="Cust_Buyer" onchange="getCity(<?=$country?>,this.value)">
<? while($row=mysql_fetch_array($result)) { ?>
<option value="<?=$row['ContName']?>"><?=$row['ContName']?></option>
<? } ?>
</select>
繰り返しますが、cdd.phpファイル内では、文字列は空白で切り捨てられます。