0

別のテキスト ボックス フィールドに値がある場合、テキスト ボックスに入力する必要があります。JavaScript で問題が発生しました。完全に機能しません。

まず、フォーム自体の html コードを見てみましょう。

<div style="width: 145px; height: 30px; float: left; margin-top: 5px; margin-left: 3px;">
    <label>Product Segment</label><label style="color: #F00;">*</label>
</div>
<div class="ui-widget"
    style="width: 145px; height: 30px; float: left; margin-top: 5px; margin-left: 3px;">
    <input type="text" name="productsegment" id="productsegment" onkeyup="getagentids();" value="<?php echo $productsegment;?>" />
</div>
<!--Row3 end-->

<!--Row3 -->
<div style="width: 145px; height: 30px; float: left; margin-top: 5px; margin-left: 3px;">
    <label>Product Group</label><label style="color: #F00;">*</label>
</div>
<div
    style="width: 145px; height: 30px; float: left; margin-top: 5px; margin-left: 3px;">
    <input type="text" name="productgroup" id="productgroup" value="<?php echo $productgroup;?>" />
</div>

Jscript コード:

<script type="text/javascript"> 
var url = "productgroupautofill.php?param=";

function GetHttpObject() {
    if (window.ActiveXObject)
        return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    else {
        alert("Your browser does not support AJAX.");
        return null;
    }
}
function getagentids() {
    httpobject = GetHttpObject();

    if (httpobject != null) {
        var idValue = document.getElementById("productsegment").value;
        var myRandom = parseInt(Math.random() * 99999999);
        // cache buster

        http.open("GET", url + escape(idValue) + "&rand=" + myRandom, true); // from
        // here
        // it
        // wont
        // work
        http.onreadystatechange = handleHttpResponse;
        http.send(null);

    }
}
function handleHttpResponse() {
    if (http.readyState == 4) {
        results = http.responseText;
        alert(results);
        document.getElementById('productgroup').value = results;
    }
}            
</script>

productgroupautofill.php ファイルの内容 .

<?php
require_once 'Mysql.php';
$dblink = new Mysql();
$dblink->__construct();

if(strlen($param)>0)
{
    $result = mysql_query("select productgroup from productsegmentmaster where productgroup LIKE '$param%'");
    if(mysql_num_rows($result)==1)
    {
        while($myrow = mysql_fetch_array($result))
        {
            $agentname = $myrow["productgroup"];
            $textout .= $agentname;
        }
    }
    else
    {
        $textout=" , , ,".$param;
    }
}
echo $textout;
4

4 に答える 4

1
var url = "productgroupautofill.php?param=";
var httpobject;
function GetHttpObject() {
    if (window.ActiveXObject)
        return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    else {
        alert("Your browser does not support AJAX.");
        return null;
    }
}
function getagentids() {
    httpobject = GetHttpObject();

    if (httpobject != null) {
        var idValue = document.getElementById("productsegment").value;
        var myRandom = parseInt(Math.random() * 99999999);
        // cache buster

        httpobject.open("GET", url + escape(idValue) + "&rand=" + myRandom, true); // from
        // here
        // it
        // wont
        // work
        httpobject.onreadystatechange = handleHttpResponse;
        httpobject.send(null);

    }
}
function handleHttpResponse() {
    if (httpobject.readyState == 4) {
        results = httpobject.responseText;
        alert(results);
        document.getElementById('productgroup').value = results;
    }
}
于 2012-11-29T09:54:56.300 に答える
0

次のように定義httpobjectします。

httpobject = GetHttpObject();

しかし、あなたは使用しようとしますhttp

http.open( ... )

httpコード全体で使用するため、定義をこれに変更します。

http = GetHttpObject();

また、グローバルスコープで宣言することもできます。

var url = "productgroupautofill.php?param=";
var http;
于 2012-11-29T09:49:54.307 に答える
0

productgroupautofill.phpで次のコードを試してください

require_once 'Mysql.php';
$dblink = new Mysql();
$dblink->__construct();
$param=$_GET['param'];
if(strlen($param)>0)
{ 
$result = mysql_query("select productgroup from productsegmentmaster where productgroup LIKE '$param%'"); 
if(mysql_num_rows($result)==1) 
{
 while($myrow = mysql_fetch_array($result))
 {
  $agentname = $myrow["productgroup"]; 

  $textout .= $agentname; 
  } 
  } 
  else 
  { 
  $textout=" , , ,".$param; 
  } 
  } 
  echo $textout;
于 2012-11-29T09:45:52.070 に答える
0

ループ外で tectout 変数を使用することはできません。ループ内で echo を使用してみると、いくつかの結果が表示されるはずです。実際、その変数はまったく必要ありません。$myrow["productgroup"]; をエコーするだけです。条件が true の場合、' , , '$param を別の変数に代入し、false の場合はエコー

于 2012-11-29T17:29:34.883 に答える