php - 发送文本而不是值

标签 php jquery html ajax

我的脚本中有一个 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/

相关文章:

jquery - Codeigniter从 View 到 Controller 获取ajax值

javascript - 如何创建一个表单来生成url

javascript - 获取 URL 的最后一段

html - 如何让dl dds互相对齐

php - 计算大型数据库的结果数量

php - 处理来自第 3 方的无效 Json 响应

php - 通过单个查询获取类别和文章

php - PHP脚本至少需要Kubernetes上ram数量的3倍

php - 在 html/php 表中显示 mysql 数据库的结果

java - 我的 Struts.xml 文件无法重定向到我的操作类并给出 404 错误