使用 Ajax 时如何在 JavaScript 和 php 中为下拉菜单设置增量值

     2023-02-24     170

关键词:

【中文标题】使用 Ajax 时如何在 JavaScript 和 php 中为下拉菜单设置增量值【英文标题】:How to Set incremental value for dropdown both in JavaScript and php while using Ajax 【发布时间】:2017-03-19 00:21:53 【问题描述】:

我正在研究多动态下拉选项,并尝试在用户单击添加按钮(函数在 JavaScript 中使用 .append)时设置增量值,以便在使用 Ajax 时在 JavaScript 和 php 中设置下拉选项所以需要一个解决方案对于这个问题:

<?php  // it is use for database connection with PDO
 function load_country()  
    include('config.php');
     $output = '';  
    $statement = $db->prepare("SELECT * FROM tbl_country ORDER BY country_name");
    $statement->execute();
    $result = $statement->fetchAll(PDO::FETCH_ASSOC);
    foreach($result as $row) 
    $output .= '<option value="'.$row["country_id"].'">'.$row["country_name"].'</option>';
    
    return $output;  
 
?>
<html>  <head>  <script src="jquery.js"></script>  </head>   //This is the form part of html
  <body> 
   <table><input type="button"  class="btn btn-primary add" value="+">
    <tbody class="details">
     <tr>
       <td><select name="country[]" class="country"><option value="">Country</option> <?php echo load_country(); ?></select></td>
       <td><select name="state[]" class="state"><option value="">state</option> </select></td>
       <td><select name="money[]" class="money"><option value="">money</option></select></td>
     </tr>
    </tbody>
   </table>
  </body>
</html>
<script type="text/javascript">
    var i = 0;
    $(function()
        $('.add').click(function() // here add button code
            var tr = '<tr>'+
                     '<td><select name="country[]" class="country'+i+'"><option value="">Select Country</option> <?php echo load_country(); ?></select></td>'+
                     '<td><select name="state[]" class="state'+i+'"><option value="">Select state</option> </select></td>'+
                     '<td><select name="money[]" class="money'+i+'"><option value="">Select money</option></select></td>'+
                     '</tr>';
        $('.details').append(tr); // append function
            $(document).ready(function()  // ajax data load for country
                  $('.country+i+').change(function()  
                       var country_id = $(this).val();  
                       $.ajax(
                            url:"fetch_state.php",  
                            method:"POST",  
                            data:countryId:country_id, 
                            dataType:"text",  
                            success:function(data)   
                                 $('.state+i+').html(data); 
                              
                       );  
                  );  
            );  
            $(document).ready(function() // ajax data load for state
                  $('.state+i+').change(function()  
                       var state_id = $(this).val();  
                       $.ajax(  
                            url:"fetch_money.php",  
                            method:"POST",   
                            data:stateId:state_id,  
                            dataType:"text",  
                            success:function(data)   
                                 $('.money+i+').html(data);  
                              
                       );  
                  );  
             );  
        );
        i++;
    );  
$(document).ready(function()
      $('.country').change(function()  
           var country_id = $(this).val();  
           $.ajax(
                url:"fetch_state.php",  
                method:"POST",  
                data:countryId:country_id, 
                dataType:"text",  
                success:function(data) 
                     $('.state').html(data); 
                  
           );  
      );  
 );  
$(document).ready(function()
      $('.state').change(function()  
           var state_id = $(this).val();  
           $.ajax(  
                url:"fetch_money.php",  
                method:"POST",   
                data:stateId:state_id,  
                dataType:"text",  
                success:function(data)   
                     $('.money').html(data);  
                  
           );  
      );  
 ); 
</script>

我的代码看起来很大,但我尝试分享所有内容它可以帮助您理解我的问题。 当单击添加附加功能正常工作但认为下拉列表不像第一个那样工作,所以我使用增量值作为“i”。但不工作。我展示一张你明白我需要什么的图片 我希望你能帮助我。提前致谢。

【问题讨论】:

【参考方案1】:

无需一次又一次地重新生成相同的js 代码。只需使用三个类。你可以这样试试。

这里我使用了一些虚拟选项,因为我无法访问 ajax 响应。

SEE DEMO

HTML:

<table><input type="button"  class="btn btn-primary add" value="+">
<tbody class="details">
 <tr>
   <td><select name="country[]" class="country"><option value="">Country</option> <option value="1">Country 1</option></select></td>
   <td><select name="state[]" class="state"><option value="">state</option><option value="1">state 1</option> </select></td>
   <td><select name="money[]" class="money"><option value="">money</option><option value="1">money 1</option></select></td>
 </tr>
</tbody>

JS:

$(document).ready(function()
    $('.add').click(function() // here add button code
        var tr = '<tr>'+
                 '<td><select name="country[]" class="country"><option value="">Country</option> <option value="1">Country 1</option> <?php echo load_country(); ?></select></td>'+
                 '<td><select name="state[]" class="state"><option value="">state</option><option value="1">state 1</option> </select></td>'+
                 '<td><select name="money[]" class="money"><option value="">Select money</option></select></td>'+
                 '</tr>';
    $('.details').append(tr); // append function

    );

  $(document).on('change', '.country', function()
       var country_id = $(this).val();
       var _this = $(this).parents("tr").find(".state");

       $.ajax(
            url:"fetch_state.php",  
            method:"POST",  
            data:countryId:country_id, 
            dataType:"text",  
            success:function(data) 

                 $(_this).html(data); 
              
       );  
  );  
  $(document).on('change', '.state', function()  
       var state_id = $(this).val();
        var _this = $(this).parents("tr").find(".money");
       $.ajax(  
            url:"fetch_money.php",  
            method:"POST",   
            data:stateId:state_id,  
            dataType:"text",  
            success:function(data)   
                 $(_this).html(data);  
              
       );  
  );  
 ); 

记住,最好这样写:

$(document).on('change', '.country', function()
    .............
    ............
);

代替:

$('.country').change(function()  
    .............
    ............
);

【讨论】:

谢谢,但最后一个 ajax 函数?我应该使用什么? 对不起!我不明白。【参考方案2】:

使用

$('.state'+i).html(data);

$('.money'+i).html(data); 

$('.country'+i) 

$('.state'+i)

改为

$('.state+i+').html(data); 

$('.money+i+').html(data);  

$('.country+i+')

$('.state+i+')

【讨论】:

感谢您的宝贵回答,但在您回答之前,我会先用 Md Mahfuzur Ra​​hman 的回答来解决。

如何使用 Javascript 或 ajax 在文本字段中实时注入或添加输入字段的值?

】如何使用Javascript或ajax在文本字段中实时注入或添加输入字段的值?【英文标题】:HowdoIauseJavascriptorajaxtoinjectoraddathevalueofaninputfieldinatextfieldinrealtime?【发布时间】:2016-12-2602:11:10【问题描述】:我有一个id为#image_tag_list_tokens的... 查看详情

Ajax 和 JavaScript,如何在不使用 JQuery 的情况下发布数组?

】Ajax和JavaScript,如何在不使用JQuery的情况下发布数组?【英文标题】:AjaxandJavaScript,howtoPOSTarray*without*usingJQuery?【发布时间】:2016-03-3120:04:21【问题描述】:我正在通过Ajax调用PHP函数:varajax=newXMLHttpRequest();ajax.open("POST","file.php"... 查看详情

当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?

】当数据在javascriptcodeigniterphp中使用ajax成功功能时,如何禁用页面重新加载?【英文标题】:howcanpagereloaddisabledwhendatagetusingajaxsuccessfunctioninjavascriptcodeigniterphp?【发布时间】:2016-05-0409:29:39【问题描述】:我有一个注册表单,并... 查看详情

如何在 Spring Boot 中使用 JavaScript、jQuery 的 Ajax 成功时将数字转化为星级?

】如何在SpringBoot中使用JavaScript、jQuery的Ajax成功时将数字转化为星级?【英文标题】:HowtoturnnumberintostarratingwhileAjaxsuccessusingJavaScript,jQueryinSpringBoot?【发布时间】:2021-09-1403:21:48【问题描述】:我正在开发一个SpringBootWeb应用程序... 查看详情

在 iOS 上未选择文件时,JavaScript 使用 FormData 和 jQuery 的 ajax 上传文件返回错误 500

】在iOS上未选择文件时,JavaScript使用FormData和jQuery的ajax上传文件返回错误500【英文标题】:JavaScriptUsingFormDataandjQuery\'sajaxforuploadingfilesreturnserror500whennofileisselectedoniOS【发布时间】:2018-07-3009:01:37【问题描述】:我正在使用FormData... 查看详情

Thymeleaf - 如何交互和重新加载 Javascript?

】Thymeleaf-如何交互和重新加载Javascript?【英文标题】:Thymeleaf-HowtointeractandreloadJavascript?【发布时间】:2021-02-0509:21:21【问题描述】:在没有页面刷新的情况下,我正在调用一个ajax请求,该请求会到达控制器并带来一个Thymeleaf... 查看详情

在javascript-ajax中提交表单时如何显示进度条

】在javascript-ajax中提交表单时如何显示进度条【英文标题】:Howtoshowtheprogressbarwhensubmittingtheforminjavascript-ajax【发布时间】:2021-06-1819:18:10【问题描述】:我已经做了进度条和一切。但是当我选择文件上传时出现问题,这意味着... 查看详情

当用户到达页面末尾以加载新内容时,如何调用 JavaScript (AJAX) 函数?

】当用户到达页面末尾以加载新内容时,如何调用JavaScript(AJAX)函数?【英文标题】:HowdoyoucallaJavaScript(AJAX)functionwhentheuserreachestheendofapagetoloadnewcontent?【发布时间】:2011-04-2106:07:40【问题描述】:在twitter(新twitter)和facebook上,... 查看详情

在视图上使用 AJAX 时访问 $view 对象

...用Ajax过滤视图,如何访问$view对象?我想用来生成不同的Javascript和表单,因此最 查看详情

如何使用 Ajax 和 JSON 在 javascript 中使用 v3 URL API 获取 Youtube 视频标题

】如何使用Ajax和JSON在javascript中使用v3URLAPI获取Youtube视频标题【英文标题】:HowtogetYoutubevideotitlewithv3URLAPIinjavascriptwAjax&JSON【发布时间】:2015-03-1702:44:07【问题描述】:我只是想获取Youtube视频的标题。好像想不通到目前为止... 查看详情

如何在前端的 Javascript Ajax API 调用中隐藏我的 JWT 令牌?

】如何在前端的JavascriptAjaxAPI调用中隐藏我的JWT令牌?【英文标题】:HowtohidemyJWTtokenOnJavascriptAjaxAPICallfromFrontend?【发布时间】:2018-04-0818:35:55【问题描述】:我的问题是当用户登录时我被实施了JWT令牌。还通过POSTMAN进行了一些... 查看详情

在 Javascript 中使用 Rails 关联

】在Javascript中使用Rails关联【英文标题】:UsingRailsAssociationsinJavascript【发布时间】:2015-05-1321:40:28【问题描述】:我正在尝试使用ajax和rails创建一个提要,以获取管理员和警报的活动。当我第一次创建视图时,我只使用了rails,... 查看详情

如何使用 PHP 和 Ajax 将数组传递给 Javascript?

】如何使用PHP和Ajax将数组传递给Javascript?【英文标题】:HowtopassanarrayusingPHP&AjaxtoJavascript?【发布时间】:2011-11-0722:46:13【问题描述】:抱歉,如果这个解释不清楚,我也很难理解。如何使用PHP和Ajax将数组发送到Javascript?我... 查看详情

javascript,ajax和内存使用情况

为了简化我的问题,我想我有一个应用程序可以打开客户端上的Intranet。我想应用程序有一个页面,我使用ajax与服务器进行交互。我正在使用ajax来下载字节文件(每个字节文件的3Mo作为来自服务器的ajax对象响应),这些字节文... 查看详情

如何通过在特定控制器和操作上使用 Ajax 调用来重定向用户 [重复]

...【发布时间】:2016-09-1308:31:03【问题描述】:下面是我的Javascript函数,它会在点击更新按钮时进行更新。functionUpdateData()varobj="testData":$( 查看详情

如何使用 javascript/jquery/AJAX 调用 Django REST API?

】如何使用javascript/jquery/AJAX调用DjangoRESTAPI?【英文标题】:HowtocallDjangoRESTAPIsusingjavascript/jquery/AJAX?【发布时间】:2016-10-2306:31:02【问题描述】:我想使用Javascript、jQuery、AJAX在前端调用DjangoRestAPI。请求方法是POST但是当我看到API... 查看详情

如何使用 Vanilla JavaScript/Ajax 获取地理位置 - 国家和城市

】如何使用VanillaJavaScript/Ajax获取地理位置-国家和城市【英文标题】:HowtogetgeolocationwithVanillaJavaScript/Ajax-CountryandCity【发布时间】:2018-01-1901:27:23【问题描述】:我正在学习JavaScript和Ajax。我不想使用任何库或框架。我找到了一... 查看详情

使用 xhprof 分析 PHP 代码时,如何防止它破坏来自 JavaScript 客户端的 Ajax 调用?

】使用xhprof分析PHP代码时,如何防止它破坏来自JavaScript客户端的Ajax调用?【英文标题】:WhenusingxhprofprofilingPHPcode,howtopreventitfromdestroyingtheAjaxcallfromtheJavaScriptclient?【发布时间】:2010-11-1801:55:30【问题描述】:当我使用xhprof分析PH... 查看详情