0

$ _POSTメソッドを介してtest.phpからbackgroundScript.phpに値を送信しようとしています。送信されている値を出力すると正しい値が取得されますが、backgroundScriptファイルに移動して値を確認します。送信されました-何も出力されません、それはnullに等しい--------------------------------test.phpファイル-メインコード

try {  
  # MySQL with PDO_MYSQL  
  $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);  
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  //$DBH->prepare('SELECT first FROM contacts');
}  
catch(PDOException $e) { 
    echo "I'm sorry, I'm afraid I can't do that.";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);   
}  
//get query
$FNresult=$DBH->query('SELECT first FROM contacts'); 
//set fetch mode
$FNresult->setFetchMode(PDO::FETCH_ASSOC);

$dropdown = "<select name='contacts' id='contacts' >";

while($row =$FNresult->fetch()) {

  $dropdown .= "\r\n<option  value='{$row['first']}'>{$row['first']}</option>";
 // echo getLN();

}

$dropdown .= "\r\n</select>";

echo $dropdown;


//}
/*
//                  Get last name

function getLN(){
    $query = "SELECT last FROM contacts";
    $LNresult=mysql_query($query);

    $last;
    while($row = mysql_fetch_assoc($LNresult)) {

        $last = "{$row['last']}";

    }
    echo $last;
}//end getLN
*/

$DBH = null; 
?>


<script type="text/javascript"
     src="http://code.jquery.com/jquery-latest.min.js"></script>   
<!-- javascript on client-side -->
<script type="text/javascript">  

var dropdown = $('#contacts');

document.write(dropdown.val());

dropdown.bind('change', function(){

    $.post('backgroundScript.php', 
        { 
            first: dropdown.val()

        },
        function(response) {
            $('#first').val(response.first);
            $('#last').val(response.last);
            $('#phone').val(response.phone);
            // Repeat for all of your form fields
        },
        'json'
    );

});

</script>

<form action="insert.php" method="post">
First Name: <input type="text" id="first"  ><br>
Last Name: <input type="text" id="last"><br>
Phone: <input type="text" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>

backgroundScript.php-------------------------------------------値が送信される場所

try {  
  # MySQL with PDO_MYSQL  
  $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);  
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  //$DBH->prepare('SELECT first FROM contacts');
}  
catch(PDOException $e) { 
    echo "I'm sorry, I'm afraid I can't do that.";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);   
}  

$first= $_POST['first'];
print_r("print value: $first");
//$first = "david";
$sth = $DBH->prepare('SELECT *
    FROM contacts
    WHERE first = :first');
$sth->bindParam(':first', $first, PDO::PARAM_STR);
$sth->execute();

$row = $sth->fetch();


$returnArray = array( 
'first' => $row["first"],
'last' => $row["last"], 
'phone' => $row["phone"], 
);
//print_r("After pureeing fruit, the colour is: $returnArray");
/*echo "<pre>";
print_r($returnArray);
echo "</pre>";
exit;*/


// background script

// retrieve data based on $_POST variable, set to $returnArray
/*while($row = $sth->fetch(PDO::FETCH_ASSOC)){
  // do something with row

}
$returnArray = array( 
'first' => $row["first"], 
);


echo "<pre>";
print_r($returnArray);
echo "</pre>";
exit;
*/



/****************************
 * the structure of returnArray should look something like
     array(
         'first' => firstName,
         'last' => lastName,

     )*/
    // echo json_encode(array('first' => "hello", 'last' => "Other value"));
//echo json_encode($returnArray);
$DBH = null; 
############################TEST.PHPへの更新
try {  
  # MySQL with PDO_MYSQL  
  $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);  
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  //$DBH->prepare('SELECT first FROM contacts');
}  
catch(PDOException $e) { 
    echo "I'm sorry, I'm afraid I can't do that.";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);   
}  
//get query
$FNresult=$DBH->query('SELECT first FROM contacts'); 
//set fetch mode
$FNresult->setFetchMode(PDO::FETCH_ASSOC);


//}
/*
//                  Get last name

function getLN(){
    $query = "SELECT last FROM contacts";
    $LNresult=mysql_query($query);

    $last;
    while($row = mysql_fetch_assoc($LNresult)) {

        $last = "{$row['last']}";

    }
    echo $last;
}//end getLN
*/

$DBH = null; 
?>


<script type="text/javascript"
     src="http://code.jquery.com/jquery-latest.min.js"></script>   
<!-- javascript on client-side -->
<script type="text/javascript">  

var dropdown = $('#contacts');

document.write(dropdown.val());

dropdown.bind('change', function(){

    $.post('backgroundScript.php', 
        { 
            first: dropdown.val()

        },
        function(response) {
            $('#first').val(response.first);
            $('#last').val(response.last);
            $('#phone').val(response.phone);
            // Repeat for all of your form fields
        },
        'json'
    );

});

</script>

<form action="insert.php" method="post">
<?php

$dropdown = "<select name='contacts' id='contacts' >";

while($row =$FNresult->fetch()) {

  $dropdown .= "\r\n<option  value='{$row['first']}'>{$row['first']}</option>";
 // echo getLN();

}

$dropdown .= "\r\n</select>";



echo $dropdown;
?>

First Name: <input type="text" name="first" id="first" ><br>
Last Name: <input type="text" id="last"><br>
Phone: <input type="text" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>

ドロップダウンの値を出力しようとすると、JavaScriptで未定義になります

######################################## アップデート
<form action="backgroundScript.php" method="post">

<script type="text/javascript"
     src="http://code.jquery.com/jquery-latest.min.js"></script>   
<!-- javascript on client-side -->
<script type="text/javascript">  

var dropdown = $('#contacts');

document.write(dropdown.val());

dropdown.bind('change', function(){

    $.post('backgroundScript.php', 
        { 
            first: dropdown.val()

        },
        function(response) {
            $('#first').val(response.first);
            $('#last').val(response.last);
            $('#phone').val(response.phone);
            // Repeat for all of your form fields
        },
        'json'
    );

});

</script>


<?php

$dropdown = "<select name='contacts' id='contacts' >";

while($row =$FNresult->fetch()) {

  $dropdown .= "\r\n<option  value='{$row['first']}'>{$row['first']}</option>";
}
$dropdown .= "\r\n</select>";

echo $dropdown;
?>

First Name: <input type="text" name="first" id="first" ><br>
Last Name: <input type="text" name="last" id="last"><br>
Phone: <input type="text"  name="phone" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>
4

2 に答える 2

3

POSTは、name代わりにidパラメータを識別するために使用します。nameフィールドで使用するか、両方を使用します。

<input type="text" name="first" id="first" >

JavascriptはID全体をうまく処理できgetElementByIDますが、POSTおよびGETデータnameを使用する必要があります。

編集:ステートメントがandタグ<select....>内にあることも確認する必要があります。そうでない場合、ステートメントはそのフォームの一部として送信されません。<form></form>

この行を貼り付けます:

<form action="backgroundScript.php" method="post">

これらの線の上:

<script type="text/javascript"
     src="http://code.jquery.com/jquery-latest.min.js"></script>   
<!-- javascript on client-side -->
<script type="text/javascript">  

編集2:また、Herpaが指摘しているように、あなた<form action=''>はに設定されており、ではinsert.phpありませんbackgroundScript.php。それも変更する必要があります。

于 2012-08-08T06:50:39.843 に答える
1

これを test.php ファイルで変更します。

<form action="backgroundScript.php.php" method="post">
First Name: <input type="text" id="first" ><br>
Last Name: <input type="text" id="last"><br>
Phone: <input type="text" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<?php echo $dropdown; ?>
<input type="Submit">
</form>

form タグの action 属性は、POST データの送信先を示します。スクリプトでは、それを insert.php に送信していました。POST 変数を介して入力フィールドの名前を取得するには、name 属性も使用する必要があります。編集:フォームの外側で選択をエコーし​​ていました。

于 2012-08-08T06:53:00.003 に答える