Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
MVC-在jquery填充后选择正确的下拉选项_Jquery_Ajax_Asp.net Mvc_Razor - Fatal编程技术网

MVC-在jquery填充后选择正确的下拉选项

MVC-在jquery填充后选择正确的下拉选项,jquery,ajax,asp.net-mvc,razor,Jquery,Ajax,Asp.net Mvc,Razor,我正在创建一个编辑视图,该视图将根据编辑操作更改其内容和表单元素。我传递一个模型,将一个值存储在一个隐藏元素中,然后,一旦文档准备好,我就使用ajax填充一个下拉列表。紧接着,我需要选择与隐藏元素中的值相等的正确选项。 我的代码不起作用,我两天来一直在试图找出原因 剃刀 阿贾克斯 调用成功,在changedlSelection中,变量publ的值是正确的,但是如果我在Chrome控制台中执行代码,下拉列表不会改变它的选项,而是会改变它。 然而,change会触发,所以storeNewPublis

我正在创建一个编辑视图,该视图将根据编辑操作更改其内容和表单元素。我传递一个模型,将一个值存储在一个隐藏元素中,然后,一旦文档准备好,我就使用ajax填充一个下拉列表。紧接着,我需要选择与隐藏元素中的值相等的正确选项。 我的代码不起作用,我两天来一直在试图找出原因

剃刀

阿贾克斯

调用成功,在changedlSelection中,变量publ的值是正确的,但是如果我在Chrome控制台中执行代码,下拉列表不会改变它的选项,而是会改变它。 然而,change会触发,所以storeNewPublisher会被触发,但每个局部变量都是未定义的

我的邻居们都在抱怨,我再也不能把头撞在墙上了


非常感谢您在当前的实现中,在LoadPublisher之后调用changeDDLSelection方法。但这并不意味着第二个方法总是在changedlSelection方法完成它必须完成的所有工作之后执行。如果在每个方法中放置一个console.log,您将看到这一点

您应该做的是,在添加结果数组中的所有选项后,在ajax调用LoadPublisher方法的成功事件中调用changedlSelection方法

function loadPublishers() {
    $.ajax({
        type: "GET",
        url: "/Filter/GetPublishers/",
        contentType: 'application/json',
        data: { productType : $("#ddl_filterProdType option:selected").val() },
        success: function (data) {
            $.each(data, function (i, pub) {
                $("#ddl_publisher").append('<option value="' + pub.Text +
                                   '"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
            });
            //Safely call the second method here
             changeDDLSelection();
         },
         error: displayPublishFailureMessage
     });
}
function changeDDLSelection() {
    var publ = $("#hid_publisher").val();
    $("#ddl_publisher").val(publ).change();
}

$(document).ready(function(){
    loadPublishers();       
}

不幸的是,我把它放在了第一位,但我得到了同样的结果,我想,也许出于某种原因,它没有在代码的成功部分触发。它与Nadeem建议的分离调用一起工作。我以为电话是顺序的,不是平行的!非常感谢!好的,这实际上和Shyju的答案一起起作用了!非常感谢。我想知道为什么连电话都挂不上
$(document).ready(function(){
    loadPublishers();
    changeDDLSelection();
}

function changeDDLSelection() {
    publ = $("#hid_publisher").val();
    $("#ddl_publisher").val(publ).change();
}
function storeNewPublisher() {
    var publisherText = $("#ddl_publisher option:selected").text();
    var publisherValue = $("#ddl_publisher option:selected").val();
    var publisherStatus = publisherText.replace(publisherValue, '').replace('-', '').replace('[', '').replace(']', '').trim();
    $("#hid_publisher").val(publisherValue);
    $("#hid_publisherStatus").val(publisherStatus);
}
function loadPublishers() {
    $.ajax({
        type: "GET",
        url: "/Filter/GetPublishers/",
        contentType: 'application/json',
        data: { productType : $("#ddl_filterProdType option:selected").val() },
        success: function (data) {
            $.each(data, function (i, pub) {
                $("#ddl_publisher").append('<option value="' + pub.Text + '"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
            });
         },
         error: displayPublishFailureMessage
     });
 }
function loadPublishers() {
    $.ajax({
        type: "GET",
        url: "/Filter/GetPublishers/",
        contentType: 'application/json',
        data: { productType : $("#ddl_filterProdType option:selected").val() },
        success: function (data) {
            $.each(data, function (i, pub) {
                $("#ddl_publisher").append('<option value="' + pub.Text +
                                   '"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
            });
            //Safely call the second method here
             changeDDLSelection();
         },
         error: displayPublishFailureMessage
     });
}
function changeDDLSelection() {
    var publ = $("#hid_publisher").val();
    $("#ddl_publisher").val(publ).change();
}

$(document).ready(function(){
    loadPublishers();       
}