【问题标题】:Facing Issue in ajaxajax面临的问题
【发布时间】:2020-07-29 08:21:19
【问题描述】:

我是 laravel 和 ajax 的新手...我想在下拉列表中显示所选国家的状态,但是当我从下拉列表中选择国家时,它会完美地从 laravel 中获取数据并在 ajax 中获取。 . 但它无法在 html 选项标签中附加数据.. 有关更多详细信息,我还附上了 ajax 的代码...`

$("#country").change(function(e){
  var countryid = $(this).val();
  console.log("Change Event Happpened on id : "+ countryid);
  $.ajax({
    type :"GET",
    url :"GetStates/"+countryid,
    success : function(statelist){
      $("#state").empty();
      $("#state").append('<option> Select State...</option>')
      $.each(statelist,function (statename,stateid) {
        **$("#state").append('<option>' + statename + ' </option>') // This line of code is not working**
        console.log("in each function");
      });
    }
  });
})
`

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    您错误地使用了jQuery.each 函数。 jQuery.each callback function 接受两个参数:

    Function( Integer indexInArray, Object value )
    

    所以根据你的(错误的)代码:

    $.each(statelist,function (statename,stateid)
    

    statename 持有项目索引,stateid 接收 statelist 项目,这显然与您的想法背道而驰。

    假设statelist具有以下结构:

    statelist = [
      {
        statename: 'LA',
        stateid: 1
      }
    ]
    

    回调函数应该如下所示:

    $.each(statelist,function (index, state) {
      $("#state").append(`<option value="${state.stateid}">${state.statename}</option>`)
    });
    

    您可以使用javascript object destructuring 来简化此操作:

    $.each(statelist,function (index, {stateid, statename}) {
      $("#state").append(`<option value="${stateid}">${statename}</option>`)
    });
    

    工作代码:

    const statelist = [{
        statename: "LA",
        stateid: 1
      },
      {
        statename: "MA",
        stateid: 2
      },
    ];
    
    $("#state").empty();
    $("#state").append("<option value=''>Please select a state...</option>");
    $.each(statelist, (index, {
      statename,
      stateid
    }) => {
      $("#state").append(`<option value="${stateid}">${statename}</option>`);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <select id="state">
      <option>This will be removed</option>
    </select>

    【讨论】:

    • 当我在另一个文件中使用它时,亲爱的相同代码工作正常......并且所有数据都在 console.log() 我已经检查过......问题只是它没有附加在html代码中
    • 成功回调中的statelist是什么样子的?
    • yes.. 数据即将到来,但问题是 $("#state").append('') 不起作用...我在另一个文件中尝试了相同的代码,它工作正常......同时我检查了我们必须添加的 jquery 文件,但它也不起作用......
    猜你喜欢
    • 2013-01-08
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2021-10-02
    • 2013-05-18
    相关资源
    最近更新 更多