如何从html选择选项onChange调用php函数?

时间:2015-12-07 22:54:58

标签: javascript php jquery html ajax

所以我整天都在努力解决这个问题,似乎无法解决这个问题。 每当选择下拉菜单中的选项时,我都需要调用php查询。

<select class="selectpicker" id="headSelector">
 <?php
  $cname = $_GET['cname'];

 $linkID = mysql_connect("localhost","USER","PASS");
 mysql_select_db("USR", $linkID);               

 $SQLCurr = "SELECT `AName` FROM `Char-Armor` WHERE `CName` = '$cname' AND `AType`= 'Head'";
 $currHeadValues = mysql_query($SQLCurr, $linkID);
 $currRow = mysql_fetch_row($currHeadValues);
 $curr = $currRow[0];
 if($curr == '' || $curr == NULL){
     $curr = 'None';
 }

 $SQLHead = "SELECT AName FROM  `Armor` WHERE AType = 'Head'";
 $allHeadValues = mysql_query($SQLHead, $linkID);
 echo "<option>".$curr."</option>";
 while($row = mysql_fetch_assoc($allHeadValues)){
     echo "
         <option>".$row['AName']."</option>
     ";
 }
 ?>
 </select>

php部分需要采取&#39; AName&#39;从选项中使用它并插入表格。

我已经做了很多关于AJAX的阅读,但我不太明白它是如何工作的。我认为这就像html - &gt; js - &gt; Ajax - &gt; PHP

当选择一个选项时,我需要它保持在同一页面上。

任何解释都会很棒,谢谢!

2 个答案:

答案 0 :(得分:1)

这是你可以做的。

1)。选择一个选项后,运行jquery onchange事件并获取所选选项的值。

2)。现在,使用所选值的值运行ajax请求,并将此数据发布到后端php文件。

3)。现在在这个后端php文件中,接收数据和进程(运行查询)。

代码示例。

以这种方式更改option行。

<option value="$row['AName']">".$row['AName']."</option>

的jQuery的Ajax

$("#headSelector").change(function(e){
//get the value of the selected index.
value = $(this).val();
//make an ajax request now
$.ajax({
url: 'yourPhpBackendScript.php',
type: 'POST',
data: {value: value},
success:function(response)
{
alert(response);
}
})
})

<强> yourPhpBackendScript.php

//You can now receive the selected value as $_POST['value'];
//get the value now
$value = $_POST['value'];
//you can apply validations if you want.
//Now, run the query and send a response. Response can be a simple message like data submitted etc. So
runQueryHere

echo "inserted"; //response returned to ajax rquest

答案 1 :(得分:0)

首先,像这样返回字符串:

$options_arr = '';
while($row = mysql_fetch_assoc($allHeadValues)){

         $options_arr .= "<option>".$row['AName']."</option>
     ";
 }

echo $options_arr;

使用这样的更改事件:

$("#headSelector").change(function(){
    $.ajax({
        data: '',
        url: 'your_url',
        type: 'POST',//Or get
        success: function(options_array){
            $("#headSelector").empty().append(options_str);
        }
    });
});