0

テスト用の私のコードは次のとおりです。両方のファイルは競合を避けるために .php です。私は 30 年間プログラミングしていますが、.js と .php は初めてです。簡単な作業の構文を理解できません。 . 該当するすべての例を読んで試しましたが、うまくいきませんでした。私が台無しにしている場所を教えてください!!

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

    <title>TestofTopicText</title>
    <script language="Javascript">
    <!--
    function OnButton1()
    {
    var newtopic = document.getElementById('topic');
    document.Form1.target = "_self";    
    document.Form1.action = "1-open-close.php?var=$newtopic";
    document.Form1.submit();             // Submit the page
    }
    -->
    </script>
    </head>

    <body>
    <h3><span style="color: #00ff00;">If NOT found to right ENTER Your Topic Here!        </span></h3>
    // Using get method as I read was appropriate for getElementById
    <form id="Form1" method="get" name="Form1">
  <input type="text" name="q" id="topic" size="55" />
      <input type="submit" name="sa" value="Search" onclick="OnButton1()"/>
    </form>
    </body>

    </html>

    // I am passing to this .php file known as 1-open-close.php
    // The file opens and writes test text but I can't get topic text from other file?
<?php
    $topic = $_GET['var'];
    $myFile = "Topics.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData = "Test to Make Sure Open \n";
    fwrite($fh, $topic);
    fwrite($fh, $stringData);
    fclose($fh);
    // return true;
?>
4

4 に答える 4

1

これに実際に JavaScript を使用するかどうかはわかりませんが、html にネイティブなフォームの動作を使用するだけで単純化でき、渡された入力を参照できます。つまり、既にフォームをメソッド GET として指定しているので、入力タイプform タグ内に含まれるテキストは、特別な努力なしに投稿されます。PHP側では、html入力で指定された「名前」を配列へのインデックスとして使用することで、その値を参照できます。お役に立てれば!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

    <title>TestofTopicText</title>
    </head>

    <body>
    <h3><span style="color: #00ff00;">If NOT found to right ENTER Your Topic Here!        </span></h3>
    // Using get method as I read was appropriate for getElementById
    <form id="Form1" method="get" name="Form1" action="1-open-close.php">
  <input type="text" name="q" id="topic" size="55" />
      <input type="submit" name="sa" value="Search"/>
    </form>
    </body>

    </html>

    // I am passing to this .php file known as 1-open-close.php
    // The file opens and writes test text but I can't get topic text from other file?
<?php
    $topic = $_GET['q'];
    $myFile = "Topics.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData = "Test to Make Sure Open \n";
    fwrite($fh, $topic);
    fwrite($fh, $stringData);
    fclose($fh);
    // return true;
?>
于 2012-11-28T01:20:50.577 に答える
1

JavaScript は PHP のように変数を補間しないため、必要なものでは$newtopicなく文字通り文字列を送信しています。とにかく全体が冗長です。これを試して:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>TestofTopicText</title>
</head>
<body>
  <h3 style="color:#0f0;">If NOT found to right ENTER your topic here!</h3>
  <form method="post" action="1-open-close.php">
    <input type="text" name="q" size="55" />
    <input type="submit" value="Search" />
  </form>
</body>
</html>

次に、PHP ファイルは次のようになります。

<?php
$topic = $_POST['q'];
$myFile = "Topics.txt";
$fh = fopen($myFile,"a") or die("can't open file");
$stringData = "Test to make sure open\n";
fwrite($fh,$topic);
fwrite($fh,$stringData);
fclose($fh);
?>
于 2012-11-28T01:21:08.980 に答える
0

ここ:

var newtopic = document.getElementById('topic');
document.Form1.target = "_self";    
document.Form1.action = "1-open-close.php?var=$newtopic";

JavaScript変数newtopicを$newtopic(PHP変数の構文であり、ここでは適用されません)で渡そうとしています。また、要素自体を送信しようとしていますが、これは意味がありません。入力ボックスにはname="q"があり、これがPHPでアクセスする必要があるものです。

それにもかかわらず、コードはまだひどく形成されています。送信される前に「q」にアクセスしようとするとエラーが発生します。

フォームにアクションを追加し、不要なスクリプトを削除しました。私もに変更$topic = $_GET['var']しました$topic = $_GET['q'];

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

    <title>TestofTopicText</title>

    </head>

    <body>
    <h3><span style="color: #00ff00;">If NOT found to right ENTER Your Topic Here!        </span></h3>
    // Using get method as I read was appropriate for getElementById
    <form id="Form1" method="get" name="Form1" action="1-open-close.php">
  <input type="text" name="q" id="topic" size="55" />
      <input type="submit" name="sa" value="Search" />
    </form>
    </body>

    </html>

    // I am passing to this .php file known as 1-open-close.php
    // The file opens and writes test text but I can't get topic text from other file?
<?php
    $topic = $_GET['q'];
    $myFile = "Topics.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData = "Test to Make Sure Open \n";
    fwrite($fh, $topic);
    fwrite($fh, $stringData);
    fclose($fh);
    // return true;
?>
于 2012-11-28T01:27:38.330 に答える
0

編集:フォームアクションをJavaScriptに入れているのがわかります。それは変だ。ともかく:

変数の値を調べるには、多くの echo ステートメントを使用することをお勧めします。

便利なもの:

print_r($_POST); // find out what values have been received by POST method
print_r($_SESSION); // find out what values are stored in SESSION

読みやすいようにタグでprint_r囲みます。<pre></pre>

于 2012-11-28T01:19:07.137 に答える