Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jquery设置动态加载的下拉列表_Jquery_Ajax_Json - Fatal编程技术网

如何使用jquery设置动态加载的下拉列表

如何使用jquery设置动态加载的下拉列表,jquery,ajax,json,Jquery,Ajax,Json,我正在寻找一种在动态加载(使用json值)后选择下拉列表值的方法。 我想在加载完成后再做 以下是一个例子: $.ajax({ url:"/echo/json/", data:data, type:"POST", success:function(response) { console.log(response); var items = '<option value="0">-- All --</optio

我正在寻找一种在动态加载(使用json值)后选择下拉列表值的方法。 我想在加载完成后再做

以下是一个例子:

 $.ajax({
    url:"/echo/json/",
    data:data,
    type:"POST",
    success:function(response)
    {
        console.log(response);
       var items = '<option value="0">-- All --</option>';
     $.each(response, function (i, channel) {
         items += "<option value='" + channel.Value + "'>" + channel.Text + "</option>";
     });       

     $('#PromotionFilter_Channel_ID').html(items);
        // HERE IT WORKS :$("#PromotionFilter_Channel_ID").val(3);
    }
});

//test doesn't work
$("#PromotionFilter_Channel_ID").val(3);
$.ajax({
url:“/echo/json/”,
数据:数据,
类型:“POST”,
成功:功能(响应)
{
控制台日志(响应);
变量项='--所有--';
$。每个(响应、功能(i、通道){
项目+=“”+频道。文本+“”;
});       
$('#PromotionFilter_Channel_ID').html(项目);
//它在这里工作:$(“#PromotionFilter_Channel_ID”).val(3);
}
});
//测试不起作用
$(“#PromotionFilter_Channel_ID”).val(3);
小提琴样品:


谢谢你的帮助

小心点,ajax是异步的!这意味着,在您尝试选择选项时,ajaxcall可能仍然很忙。您希望在ajaxcall的oncomplete中使用此选项。 如果请求的页面速度较慢或连接不是最佳连接,则可能发生这种情况

当ajaxrequest仍在执行其工作时,其余的javascript仍在继续。您正在尝试选择一个尚不存在的选项!记住,你在这里思考的时间是毫秒

实际上,您是在自己给出答案,您希望“当ajax完成时”

$("#PromotionFilter_Channel_ID").find('option[value="3"]'); // or more native:


小心点,ajax是异步的!这意味着,在您尝试选择选项时,ajaxcall可能仍然很忙。您希望在ajaxcall的oncomplete中使用此选项。 如果请求的页面速度较慢或连接不是最佳连接,则可能发生这种情况

当ajaxrequest仍在执行其工作时,其余的javascript仍在继续。您正在尝试选择一个尚不存在的选项!记住,你在这里思考的时间是毫秒

实际上,您是在自己给出答案,您希望“当ajax完成时”

$("#PromotionFilter_Channel_ID").find('option[value="3"]'); // or more native:


触发ajax调用后,代码将继续执行流,因为ajax调用默认为异步的。当您尝试设置所选值时,组合框尚未填充


虽然ajax调用可以在同步模式下执行,但通常这不是正确的方法。您应该在成功回调时分配所选的值。

当您的ajax调用被触发时,您的代码将继续执行流,因为ajax调用默认是异步的。当您尝试设置所选值时,组合框尚未填充

虽然ajax调用可以在同步模式下执行,但通常这不是正确的方法。您应该在成功回调时分配所选值。

您可以尝试此操作

complete:function(){    
        $("#PromotionFilter_Channel_ID").val(3);
    }
他们修改了小提琴

你可以试试这个

complete:function(){    
        $("#PromotionFilter_Channel_ID").val(3);
    }
他们修改了小提琴


循环后的success函数中设置您的值。您现在无法设置它的原因是,AJAX是异步的,并且在命中该段代码时仍在加载。请在
循环后的success函数中设置您的值。您现在无法设置它的原因是因为AJAX是异步的,并且在代码被命中时仍在加载。我似乎已经终止了一个建议的更新,对此表示抱歉。我真的不习惯有人改变我的回答。我会尽量让它更像是建议againI似乎已经扼杀了建议的更新,对此表示抱歉。我真的不习惯有人改变我的回答。我会尽量使它再次更像这个建议