Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
Javascript 在加载到ajax中的select中触发ajax_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 在加载到ajax中的select中触发ajax

Javascript 在加载到ajax中的select中触发ajax,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,首先,这里是我的代码的一个非常简化的版本: HTML: ajax.php: 现在,我想在表格验证时预选“cat”。 我可以在提交时的“成功”部分添加一些jQuery: 该代码有效 现在,我想在第二个“选择”上做同样的事情:#支持。 但是,由于支持是在ajax中加载的,所以它不起作用。例如: [...] success: function(result) { $("#result_processing").html(result); $("#cat").trigger("chang

首先,这里是我的代码的一个非常简化的版本:

HTML:

ajax.php:

现在,我想在表格验证时预选“cat”。 我可以在提交时的“成功”部分添加一些jQuery:

该代码有效

现在,我想在第二个“选择”上做同样的事情:#支持。 但是,由于支持是在ajax中加载的,所以它不起作用。例如:

[...]
success: function(result) {
    $("#result_processing").html(result);
    $("#cat").trigger("change");
    $("#cat").val("a");
    $("#support").trigger("change");
    $("#support").val("S1");
}
[...]
在#支持上未选择任何内容。我想原因是:目前,我的DOM中不存在支持。顺便说一下,如果在这段代码之后执行console.log($(“#support”).val()),则会得到“undefined”

我想在文档触发器(DocumentRiggerException)中创建一个文档触发器。 就像这样:

[...]
success: function(result) {
    $("#result_processing").html(result);
    $("#cat").trigger("change");
    $("#cat").val("a");
    $(document).trigger("change", "#support", function() {
        $("#support").val("S1");
    });
}
[...]
但它也不起作用。 我的一位朋友还建议我创建一个隐藏字段,在其中放置#支持值,并在#cat ajax to fill#支持中创建一个条件。但这似乎不是最好的解决办法


有谁有更好的主意吗?

留出一些时间间隔,以便在DOM中进行第二次选择

[…]
成功:功能(结果){
$(“#结果处理”).html(结果);
美元(“#cat”)。触发(“更改”);
美元(“#猫”).val(“a”);
setTimeOut(函数(){
美元(“#支持”)。触发(“更改”);
美元(“#支持”).val(“S1”);
},800);
}

[…]
留出一些时间间隔,以便在DOM中进行第二次选择

[…]
成功:功能(结果){
$(“#结果处理”).html(结果);
美元(“#cat”)。触发(“更改”);
美元(“#猫”).val(“a”);
setTimeOut(函数(){
美元(“#支持”)。触发(“更改”);
美元(“#支持”).val(“S1”);
},800);
}

[…]
@Heycava解决这个问题的正确方法是使用承诺!在第一个ajax调用中,您需要链接一个done,该done将运行另一个请求来填充第二个select:

function func1() {
       $.ajax({ ... }).done(func2);
    }

希望它能帮助Heycava解决这个问题的正确方法是使用承诺!在第一个ajax调用中,您需要链接一个done,该done将运行另一个请求来填充第二个select:

function func1() {
       $.ajax({ ... }).done(func2);
    }

希望它有帮助

当然,如果元素不存在,就不能触发更改事件。您必须首先创建它。尝试使用文档或任何预先存在的父容器触发并获取值,如下所示:要触发:$(文档);对于更改值:$(文档).find(#support”).val(“S1”);谢谢罗希特·米塔尔,我已经试过你的解决方案了。对我来说,就是这样。但在这里,它还是不起作用。然而,基尚的一个做到了,所以我可以继续我的项目!当然,如果元素不存在,就不能触发更改事件。您必须首先创建它。尝试使用文档或任何预先存在的父容器触发并获取值,如下所示:要触发:$(文档);对于更改值:$(文档).find(#support”).val(“S1”);谢谢罗希特·米塔尔,我已经试过你的解决方案了。对我来说,就是这样。但在这里,它还是不起作用。然而,基尚的一个做到了,所以我可以继续我的项目!你好,stan chacon,我不知道deferred.done()方法。它看起来不错,我已经阅读了文档,并在代码中尝试了这一点,但我没有得到想要的结果。此外,如果我在第一个ajax中使用此方法,我需要调整大部分代码:-s,因为问题中给出的代码非常简单。@Heycava检查此链接它有一些我做的小示例Hello stan chacon,我不知道deferred.done()方法。它看起来不错,我已经阅读了文档,并在代码中尝试了这一点,但我没有得到想要的结果。此外,如果我在第一个ajax中使用此方法,我需要调整大部分代码:-s,因为问题中给出的代码非常简单。@Heycava检查此链接,我做了一些小示例
$html = '<input type="text" />
echo $html;
$(document).on("submit", "#add", function(e) {
    e.preventDefault();
    $.ajax({
        url: "processing.php",
        type: "post",
        data: $("#add").serialize(),
        dataType: "text",
        success: function(result) {
            $("#result_processing").html(result);
        }
    });
});
[...]
success: function(result) {
    $("#result_processing").html(result);
    $("#cat").trigger("change");
    $("#cat").val("a");
}
[...]
[...]
success: function(result) {
    $("#result_processing").html(result);
    $("#cat").trigger("change");
    $("#cat").val("a");
    $("#support").trigger("change");
    $("#support").val("S1");
}
[...]
[...]
success: function(result) {
    $("#result_processing").html(result);
    $("#cat").trigger("change");
    $("#cat").val("a");
    $(document).trigger("change", "#support", function() {
        $("#support").val("S1");
    });
}
[...]
function func1() {
       $.ajax({ ... }).done(func2);
    }