我的脚本中有一个 HTML 属性:
<select name="cars" onChange="getPrice(this.value)">
<option value="1">Volvo XC90</option>
<option value="2">Saab 95</option>
<option value="3">Mercedes SLK</option>
<option value="4">Audi TT</option>
</select>
当我选择第一项并将其发布到数据库时,我的脚本将错误的数据发送到数据库。在我的数据库中,我得到了 value
而不是文本。
通过选择第一个 <option>
我要发帖Volvo XC90
而不是 s
.我该如何解决这个问题?
我使用的 Ajax 脚本是:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
function getPrice() {
// getting the selected id in combo
var selectedItem = jQuery('#cars option:selected').val();
// Do an Ajax request to retrieve the product price
jQuery.ajax({
url: 'get.php',
method: 'POST',
data: {'cars': selectedItem },
success: function(response){
// and put the price in text field
jQuery('#cars').val(response);
},
error: function (request, status, error) {
alert(request.responseText);
},
});
}
</script>
发送.php
<?php
$correct = true;
$product1 = $_POST['product1'] ;
if($correct){
$db = new PDO('mysql:host=localhost;dbname=database', 'root', '');
$query = "INSERT INTO forms(product1) VALUES (?)";
$stmt = $db->prepare($query);
$stmt->execute(array($product1));
header("Location: ./print.php");
}
else
{
echo "<br /><br />Error.<br />\n";
}
?>
更新 1:
像这样的东西非常适合我的情况:
html:
<select name="cars" onChange="getPrice(this.value)">
<option id="1" value="Volvo XC90">Volvo XC90</option>
<option id="2" value="Saab 95">Saab 95</option>
<option id="3" value="Mercedes SLK">Mercedes SLK</option>
<option id="4" value="Audi TT">Audi TT</option>
</select>
功能:
$('[id=cars]').change(function()
{
alert($('[id=cars] option:selected').text());
});
最佳答案
使用html作为
<select name="cars" onChange="getPrice(this.value)">
<option value="">Select</option>
<option value="Volvo XC90">Volvo XC90</option>
<option value="Saab 95">Saab 95</option>
<option value="Mercedes SLK">Mercedes SLK</option>
<option value="Audi TT">Audi TT</option>
</select>
你的 js 函数几乎没有变化
function getPrice(selectedItem) {
代替
function getPrice() {
您已经在此处发送了 onChange="getPrice(this.value)"
选定值,只需要捕获它即可。
这样就不用代码重新get了,去掉这一行
var selectedItem = jQuery('#cars option:selected').val();
当您在 onchange 中发送值时,还添加了带有空白值的新选项,这对第一次加载没有影响,它将被选中第一列。
我建议先检查 selectedItem
是否为空,然后再检查 ajax。
function getPrice(selectedItem) {
alert(selectedItem);
}
<select name="cars" onChange="getPrice(this.value)">
<option value="">Select</option>
<option value="Volvo XC90">Volvo XC90</option>
<option value="Saab 95">Saab 95</option>
<option value="Mercedes SLK">Mercedes SLK</option>
<option value="Audi TT">Audi TT</option>
</select>
关于php - 发送文本而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566111/