Jquery wordpress多个ajax调用失败

Jquery wordpress多个ajax调用失败,jquery,ajax,wordpress,Jquery,Ajax,Wordpress,我有一个自定义页面,我想在其中生成一个弹出窗口,该弹出窗口应根据客户端输入(代码小额支付)通过Ajax进行多次更新 我已经创建了一个插件来处理这个问题,它第一次运行良好,但第二次尝试失败 问题似乎是它找不到javascript插件文件。它直接到达插件php文件,但它不应该这样做 必须重新初始化javascript可能会有问题,但我不确定是不是这样,或者怎么做 因此,当我在第二次尝试中单击trigger标记时,它会将我发送到处理ajax的ajax-admin.php文件。由于它不读取javascr

我有一个自定义页面,我想在其中生成一个弹出窗口,该弹出窗口应根据客户端输入(代码小额支付)通过Ajax进行多次更新

我已经创建了一个插件来处理这个问题,它第一次运行良好,但第二次尝试失败

问题似乎是它找不到javascript插件文件。它直接到达插件php文件,但它不应该这样做

必须重新初始化javascript可能会有问题,但我不确定是不是这样,或者怎么做

因此,当我在第二次尝试中单击trigger
标记时,它会将我发送到处理ajax的ajax-admin.php文件。由于它不读取javascript,因此不会停止
的默认行为

希望有人能帮忙

代码如下:

1-在原始页面加载时启动HTML(从functions.php)


你能试着替换一下吗

jQuery(".do_popup").click( function(e) {


它通过监听尚未创建的元素上的事件来工作。

你能试着替换吗

jQuery(".do_popup").click( function(e) {


它通过监听尚未创建的元素上的事件来工作。

@DRC走上了正确的轨道。问题是约束力

但它需要显式地对命名函数执行,才能使其工作。 因此,我调整了Ajax调用的
success
处理程序,并将脚本的第二部分转换为命名函数

这是:

jQuery(document).ready( function() {

jQuery(".do_popup").on("click", function(e) {
    e.preventDefault();
    var link = this;
    var boo_zone= jQuery(link).attr("id");
    var service;
    if(boo_zone.includes('alloconv')){
        service = 'alloconv';
        boo_zone = boo_zone.replace('alloconv','');
    }
    else if(boo_zone.includes('paydiallo')){
        service = 'paydiallo';
        boo_zone = boo_zone.replace('paydiallo','');
    }

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        service:service
    };
    // Post to the server
    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
         jQuery("#paydiallo_popup2").on("click", ajax2);
         jQuery(".close_popup_paiement").on("click", close_popup_paiement);
        }
    });

});



//jQuery("#paydiallo_popup2" ).on("click",function(e) {
function ajax2(e){
    e.preventDefault();
    var service= jQuery(this).attr("id");

    if(service.includes('alloconv')){
        service = 'alloconv';
    }
    else if(service.includes('paydiallo')){
        service = 'paydiallo';
    }
    var boo_zone = jQuery("#boo_zone").val();
    var boo_code = jQuery("#boo_code").val();

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        boo_code: boo_code,
        service:service
    };
  alert(info.boo_code);

    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
        alert(message);
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
        }
    });

// });
}



    //jQuery(".close_popup_paiement").on("click", function() {
  function close_popup_paiement(){
            jQuery("#paiement_popup").css("display","none");
    }       

 });

@刚果民主共和国走上了正确的道路。问题是约束力

但它需要显式地对命名函数执行,才能使其工作。 因此,我调整了Ajax调用的
success
处理程序,并将脚本的第二部分转换为命名函数

这是:

jQuery(document).ready( function() {

jQuery(".do_popup").on("click", function(e) {
    e.preventDefault();
    var link = this;
    var boo_zone= jQuery(link).attr("id");
    var service;
    if(boo_zone.includes('alloconv')){
        service = 'alloconv';
        boo_zone = boo_zone.replace('alloconv','');
    }
    else if(boo_zone.includes('paydiallo')){
        service = 'paydiallo';
        boo_zone = boo_zone.replace('paydiallo','');
    }

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        service:service
    };
    // Post to the server
    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
         jQuery("#paydiallo_popup2").on("click", ajax2);
         jQuery(".close_popup_paiement").on("click", close_popup_paiement);
        }
    });

});



//jQuery("#paydiallo_popup2" ).on("click",function(e) {
function ajax2(e){
    e.preventDefault();
    var service= jQuery(this).attr("id");

    if(service.includes('alloconv')){
        service = 'alloconv';
    }
    else if(service.includes('paydiallo')){
        service = 'paydiallo';
    }
    var boo_zone = jQuery("#boo_zone").val();
    var boo_code = jQuery("#boo_code").val();

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        boo_code: boo_code,
        service:service
    };
  alert(info.boo_code);

    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
        alert(message);
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
        }
    });

// });
}



    //jQuery(".close_popup_paiement").on("click", function() {
  function close_popup_paiement(){
            jQuery("#paiement_popup").css("display","none");
    }       

 });

谢谢@DRC。这对于该元素不是必需的,因为它是随页面加载的。如果你看一下我的代码,我为第二个元素“paydiallo_u9999”这样做了,它是动态加载的。无论如何,我试过你的建议,但是没有用。谢谢@DRC。这对于该元素不是必需的,因为它是随页面加载的。如果你看一下我的代码,我为第二个元素“paydiallo_u9999”这样做了,它是动态加载的。无论如何,我试过你的建议,但没有用。
jQuery(document).on('click', '.do_popup', function(e) {
jQuery(document).ready( function() {

jQuery(".do_popup").on("click", function(e) {
    e.preventDefault();
    var link = this;
    var boo_zone= jQuery(link).attr("id");
    var service;
    if(boo_zone.includes('alloconv')){
        service = 'alloconv';
        boo_zone = boo_zone.replace('alloconv','');
    }
    else if(boo_zone.includes('paydiallo')){
        service = 'paydiallo';
        boo_zone = boo_zone.replace('paydiallo','');
    }

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        service:service
    };
    // Post to the server
    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
         jQuery("#paydiallo_popup2").on("click", ajax2);
         jQuery(".close_popup_paiement").on("click", close_popup_paiement);
        }
    });

});



//jQuery("#paydiallo_popup2" ).on("click",function(e) {
function ajax2(e){
    e.preventDefault();
    var service= jQuery(this).attr("id");

    if(service.includes('alloconv')){
        service = 'alloconv';
    }
    else if(service.includes('paydiallo')){
        service = 'paydiallo';
    }
    var boo_zone = jQuery("#boo_zone").val();
    var boo_code = jQuery("#boo_code").val();

    var info = {
        action: 'pay_dialog_step1',
        boo_zone: boo_zone,
        boo_code: boo_code,
        service:service
    };
  alert(info.boo_code);

    jQuery.ajax({
        type:"POST",
        url:ajaxPaiement.ajaxurl,
        data:info,
        dataType:'xml',
        success: function(data){
            var message = jQuery( data ).find( 'supplemental message' ).text();
        alert(message);
             jQuery("#paiement_popup").html(message);
             jQuery("#paiement_popup").css("display","block");
        }
    });

// });
}



    //jQuery(".close_popup_paiement").on("click", function() {
  function close_popup_paiement(){
            jQuery("#paiement_popup").css("display","none");
    }       

 });