【问题标题】:AJAX getting data from selected dropdown and giving result PHPAJAX 从选定的下拉列表中获取数据并给出结果 PHP
【发布时间】:2016-10-07 16:36:21
【问题描述】:

我需要从我的两个下拉列表中获取两个数据。 第一个下拉列表获取fabricID,第二个获取sizeID。 然后ajax将选中的数据发送到calculates.php

我使用了两个函数来获取一个 $(document).ready(function(){... 中的每个下拉数据

$(document).ready(function(){

    $('.fabric').on('change',function(){
        var fabricID = $(this).val();
        console.log("fabric id_price is " + fabricID); //debugging
        if(fabricID){
           $.ajax({
                type:'POST',
                url:'calculates.php',
                dataType: 'json',
                data: {
                fabric_id: fabricID
                },

                success:function(html){                                                          
                    //closing tags 
                    //dont need nothing here because i need 
                    //just to get the value from both together

    });

    $('.size').on('change',function(){
        var sizeID = $(this).val();
        if(sizeID){
            $.ajax({
                type:'POST',
                url:'calculates.php',
                dataType: 'json',
                data: {
                size_id: sizeID
                },

                success:function(html){
                    $('.icms').html(html); // i need to get result here 
                    based on the result from calculates.php
               //closing tags

这是对的吗? 我是否以正确的方式构建了 jQuery 脚本?

因为它不起作用。 看看我的桌子: table:almofads 是存储我的面料名称的地方

我将从下拉结构中获取 id_price 并将 id_price 发送到 table:valores_almofadas 其中 price_id 必须等于第一个表。

所以当我选择fabricID和sizeID时,我会从这里得到结果...calculates.php

 <?php header('Content-Type: application/json');
 include_once '../incluedes/conn_cms.php'; //session started here

 if(isset($_GET["size_id"],$_GET["id_price"])){
    $size_id=$_GET["size_id"] ;
    $id_price=$_GET["id_price"] ;


 $query3 =" SELECT * FROM valores_almofadas 
            WHERE size='$size_id' 
            AND price_id ='$id_price'";

   $result = mysqli_query($conn,$query3);
   while($rows = mysqli_fetch_assoc($result)){

        if($_SESSION['estado'] == 'SP'){
           $ICMS = $rows['icms_7'];
           }else{
           $ICMS = $rows['icms_12'];
           }
           $_SESSION['icms']=$ICMS;

        } echo json_encode($_SESSION['icms']);

} 
?>

所以结果将显示在$_SESSION['icms']的cart.php中

function cart(){
    global $conn;

    $fabric_options = '<option>Select fabric</option>';
    $query2 = "SELECT * FROM almofadas";
    $result = mysqli_query($conn,$query2);
    while($rows = mysqli_fetch_assoc($result)){
     $tecido=$rows['tecido'];
     $id_price=$rows['id_price'];
     //sizes for size dropdown
     $t50='50';
     $t45='45';
     $fabric_options .= '<option value="'.$id_price.'">'.$tecido.'</option>';
    }

 foreach ($_SESSION as $name => $value) {
     if($value > 0){
     if(substr($name, 0, 8 ) == "product_"){
     $length = strlen($name) -8;
     $item_id = substr($name,8 , $length);
     $query = "SELECT * 
               FROM gallery2 
               WHERE gallery2.id =".escape_string($item_id). "";
               $run_item = mysqli_query($conn,$query);
  while($rows = mysqli_fetch_assoc($run_item)){ 
     $vari   = $rows['variante'];
     $num    = $rows['title'];
     $id     = $rows['id'];

 $btn_add ='<button type="button" class="btn btn-success actions plus" data-action="plus" product_id="'.$id.'"><i class="fa fa-plus fa-lg" aria-hidden="true" add_btn></i></button>';

 $btn_remove ='<button type="button" class="btn btn-warning actions less" data-action="remove" product_id="'.$id.'"><i class="fa fa-minus fa-lg" aria-hidden="true" remove_btn></i></button>';

 $btn_delete ='<button type="button" class="btn btn-default actions" data-action="delete" product_id="'.$id.'" onclick="deleteRow(this)"><i class="fa fa-times fa-lg" aria-hidden="true"></i></button>';
    if($rows['variante'] < 1){
    $vari="";
    }else{
    $vari = "-".$rows['variante'];
    }

    $product = '
    <tr>
       <td style="width:100px; "><img src="../'.$rows['image'].'" style="width:90%;border: 1px solid black;"></td>
       <td>'.$num.''.$vari.'</td>
       <td style="width:15%;">
          <select name="fabric" class="fabric select form-control selectpicker" required=""  >
        '. $fabric_options . '  
          </select>
       </td>
       <td>
          <select  id="" class="select size form-control selectpicker" required style="width:80%;"  >
          <option value="'.$t50.'">50x'.$t50.'</option>
          <option value="'.$t45.'">45x'.$t45.'</option>
          </select>
       </td>
       <td class="product'.$id.'">'.$value.'</td>//quantity of the product
       <td class="icms'.$id.'">R$:'.$_SESSION['icms'] .'</td> // cost of product
       <td class="total'.$id.'">'.$value * $_SESSION['icms'] .' </td> total of product (sub.total)
       <td> 
       '.$btn_add.' '.$btn_remove.' '.$btn_delete.'//buttons
       </td>
     </tr>';
           echo $product;  

        } 
      } 
    }
  }   
}

最后我的按钮功能在 cart_functions.php 中

header('Content-Type: application/json');
session_start();

if (isset($_GET['action'])) {
  $action = $_GET['action'];
  $prod   = $_GET['prod_id'];
  $prodname = 'product_'.$prod;
  $result;

  switch ($action) {
    case 'add':
        $result = add_prod($prod, $prodname);
    break;
    case 'plus':
        $result = plus_prod($prod, $prodname);
    break;
    case 'remove':
        $result = remove_prod($prod, $prodname);
    break;
    case 'delete':
        $result = delete_prod($prod, $prodname);
    break;
    default:
        $result = ['result'=>'error'];
    break;
  }
}

echo json_encode($result);

function add_prod($prod, $prodname){
  //sua função para add
 $_SESSION[$prodname] = 1;
 return ['result'=>'success'];
}

function plus_prod($prod, $prodname){
  $_SESSION[$prodname]++;
  return ['result'=>'success', 'val'=>$_SESSION[$prodname]];
}

function remove_prod($prod, $prodname){
  //sua função para remove
  $_SESSION[$prodname]--;
  return ['result'=>'success', 'val'=>$_SESSION[$prodname]];
}

function delete_prod($prod, $prodname){
  //sua função para delete
  $_SESSION[$prodname] = null;
  return ['result'=>'success'];
}

【问题讨论】:

  • 您告诉$.ajax 期待 json 数据,但这不是发送的内容或您处理响应的方式。将其更改为 html

标签: javascript php jquery


【解决方案1】:

fabricIDsizeID 都需要在 ajax 调用中像这样发送:

{size_id: sizeID} & {fabric_id: fabricID}

【讨论】:

  • 看这里我编辑了什么,code如果我做错了你可以编辑。
  • 保留datatypejson
  • 我现在做到了,但我没有得到价值。看code 我添加了calculates.php 所以我认为json_encode 是将值发送回$_SESSION['icms']
  • 介意分享完整代码吗?没有那个就无能为力了。
  • 另外,$_GET 中的键名应与您发送的对象的键名匹配,例如对于size_id --> $_GET['size_id']
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 2019-03-07
相关资源
最近更新 更多