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

编辑:您还需要确保该<select....>语句位于<form>and</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.phpand not 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。您还应该使用 name 属性通过 POST 变量获取输入字段的名称。编辑:您在表单外呼应了选择。

于 2012-08-08T06:53:00.003 回答