2

数週間前に作成したカスタム バックエンド モジュールで新しい機能を作成しようとしています。新しい機能は、特定の顧客からのいくつかのデータを「選択オプション」にリストするためにクエリを作成することにあります。次に、これらのオプションのいずれかを選択すると、オプションをキャッチし、GETメソッドを使用して別の .php に送信し、php が選択したデータで何かを作成し、エコーを作成するスクリプトを作成しましたなんでもいい。

コードは次のとおりです ( data.phtml)。

<script language="JavaScript" type="text/javascript">
    function showPresu(str){
    if (str=="")
    {
    document.getElementById("txtHint").innerHTML="";
    alert('nothing here');
    return;
    }
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
        alert('makes request');
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        alert('new object');
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","receiveselection.php?q="+str,true);
    xmlhttp.send();
    }
    </script>

お気づきのように、コードがスクリプト内に入ることを確認するために、いくつかのアラートを作成しました。

選択/オプションは次のとおりです( data.phtml):

echo '<select name="presus" onchange="showPresu(this.value)">';
    for($n=1;$n<=$h; $n++){
        echo "<option value='$status_id[$n]'>$status_id[$n]";
    }
    echo "</select>";

$status_id[$x]: 冒頭で紹介したいくつかのデータを含む配列です。

最終データを表示する必要がある div は ( data.phtml) です。

<div id="txtHint">
<b>result info will be listed here.</b>
</div>

そして最後に、メソッド経由で送信した情報と対話する必要がある PHPGETは (receiveselection.phpと同じフォルダーにありますdata.phtml。この PHP は別のコードに変更されることに注意してください。つまり、次のコードを変更して別のクエリを作成します。 、しかし今はテストを行うのに問題ありません):

<?php
$q=$_GET["q"];
echo $q;
?>

唯一の問題は、そのために作成された div で「receiveselecton.php」を表示しようとすると、「receiveselection.php」の結果を見るのではなく、直前にいたのと同じ Magento ページが表示されることです ( data.phtml) 、つまり、同じページが 2 回表示されます。1 つは「通常」として、もう 1 つはdiv.

receiveselection.php別の を作成する代わりにを呼び出す方法を知っている人はいますdata.phtmlか?

編集: このコードを magento の外に置くと動作しますが、内部では動作しません。だから問題は、私が知らないmagentoとの一貫性がないことかもしれません。もしくは良い方法を知っている方がいましたら教えてください。

4

1 に答える 1