Javascript 短代码冲突。如何让每组独立加载?

Javascript 短代码冲突。如何让每组独立加载?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,也许我问的问题不对,但我肯定错过了一些简单的东西。如果我在页面上放置一个运动分组,比如说“NFL”,我的短代码显示得很好,但是一旦我添加了第二个运动分组,比如说“棒球”,生成的表将显示3种类型的数据$data\u type==当前,$data\u type==过去,$data\u type==我在下面提供的php文件memberresults函数中详细说明,对于该运动组,不显示。此外,为第一组短代码(在本例中为“NFL”)生成的数据是从任何一组/运动中随机选择的 如何让所有这些短代码在一个页面上

也许我问的问题不对,但我肯定错过了一些简单的东西。如果我在页面上放置一个运动分组,比如说“NFL”,我的短代码显示得很好,但是一旦我添加了第二个运动分组,比如说“棒球”,生成的表将显示3种类型的数据$data\u type==当前,$data\u type==过去,$data\u type==我在下面提供的php文件memberresults函数中详细说明,对于该运动组,不显示。此外,为第一组短代码(在本例中为“NFL”)生成的数据是从任何一组/运动中随机选择的

如何让所有这些短代码在一个页面上显示和加载每项运动的3种数据类型,而不使它们相互冲突?要查看页面本身发生的情况,您可以在登录后转到此处:https://wsplays-members.com/short-code-test/ 使用此临时用户名和测试密码登录。作为参考,我将在下面显示我的代码。先谢谢你

在wordpress页面中输入的短代码

[get_biddata type='current' sport='NFL Football']
[get_biddata type='past' sport='NFL Football']
[get_biddata type='detailed' sport='NFL Football']

[get_biddata type='current' sport='NCAA Football']
[get_biddata type='past' sport='NCAA Football']
[get_biddata type='detailed' sport='NCAA Football']

[get_biddata type='current' sport='CFL Football']
[get_biddata type='past' sport='CFL Football']
[get_biddata type='detailed' sport='CFL Football']

[get_biddata type='current' sport='NBA Basketball']
[get_biddata type='past' sport='NBA Basketball']
[get_biddata type='detailed' sport='NBA Basketball']

[get_biddata type='current' sport='NCAA Basketball']
[get_biddata type='past' sport='NCAA Basketball']
[get_biddata type='detailed' sport='NCAA Basketball']

[get_biddata type='current' sport='MLB Baseball']
[get_biddata type='past' sport='MLB Baseball']
[get_biddata type='detailed' sport='MLB Baseball']
php文件memberresults函数

<?php
function memberresults($sport_val,$data_type){
global $wpdb;
  $bidsys_options = get_option('bidsys_options');
   for($i=1;$i<11;$i++){
        if($bidsys_options->sportsstatus[$i]!="Disabled"){
             if($sport_val==$bidsys_options->sportsname[$i])
             $sport = $i;
   }}
  $user = get_current_user_id();
  $currentsportaccess =   get_user_meta($user,"sport_".$sport ,true);
    if($currentsportaccess=="No"){
        ?>
        <div class="pmpro_content_message">Your access plan is valid but does not give you access to view this section.<br /> You may <a href="<?=home_url();?>/purchase/">purchase another access plan here</a>.</div>
        <?php

    } else {


    if($data_type=="current"){
      if (pmpro_hasMembershipLevel() ) {
   ?>
   <script type='text/javascript'>
jQuery(document).ready(function(){
    memberresults("current","<?php echo $sport;?>","");
});
</script>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Current Season</h2>
<table class='inner_result'>
<td colspan='5' >
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'>
</table>
</td>
</table>
   <?php
        } else {

            ?>
        <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
        <h2 class="post-title">Current Season Record</h2>
        <div class="pmpro_content_message">You must be logged in to view this section.  Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
        <?php

        }
    } else  if($data_type=="past"){
     if (pmpro_hasMembershipLevel() ) {

    $result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport=  '".$sport."' AND current_season = 'NO'   ORDER BY start_date DESC";
     $newmeta = $wpdb->get_results($result);
    ?>
<script type='text/javascript'>
jQuery(document).ready(function(){
    memberresults("past","<?php echo $sport;?>","season_<?php echo $newmeta[0]->id;?>");
});
</script>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Previous Seasons</h2>
    <form action='' method='post' class="f_p_filter_frm outside_table">
    <select  name='f_p_filter' class="f_p_filter" onchange='memberresults("past","<?php echo $sport; ?>",this.value)' >
    <?php $i = 0; foreach($newmeta as $seasons ){
        if($i == 0){  $sel =  'selected=""'; } else { $sel = ""; }
        ?>
    <option value='season_<?php echo $seasons->id;?>' <?php echo $sel;?>><?php echo $seasons->season_name;?></option>
    <?php $i++; } ?>
    </select>
    </form>

<table class='inner_result'>
<td colspan='5' >
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
</td>
</table>
   <?php
        } else {

            ?>
        <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
        <h2 class="post-title">Previous Seasons Records</h2>
        <div class="pmpro_content_message">You must be logged in to view this section.  Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
        <?php

        }

    } else  if($data_type=="detailed"){
     if (pmpro_hasMembershipLevel() ) {
   ?>
   <script type='text/javascript'>
jQuery(document).ready(function(){
    memberresults("detailed","<?php echo $sport;?>","yesterday");
});
</script>
<style>
.imgwin {
    background: url('/wp-content/plugins/bid-sys/customgif/winningPick.gif');
     height: 16px; width: 16px; margin:8px;
}
.imgloss {
    background: url('/wp-content/plugins/bid-sys/customgif/losingPick.gif');
     height: 16px;  width: 16px;  margin:8px;
}
.imgpush {
    background: url('/wp-content/plugins/bid-sys/customgif/pushedPick.gif');
     height: 16px;  width: 16px; margin:8px;
}

</style>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Detailed History</h2>
<form action='' method='post' class="f_p_filter_frm outside_table">
    <select  name='f_p_filter' class="f_p_filter" onchange='memberresults("detailed","<?php echo $sport; ?>",this.value)' >
    <?php
    $result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport=  '".$sport."' AND current_season = 'NO'   ORDER BY start_date DESC";
     $newmeta = $wpdb->get_results($result);

    foreach($newmeta as $seasons ){
        ?>
    <option value='season_<?php echo $seasons->id;?>' ><?php echo $seasons->season_name;?></option>
    <?php  }
    ?>
    <option value='playoftheday30' >Play of the Day (L30 Days)</option>
    <option value='playoftheday365' >Play of the Day (L365 Days)</option>
    <option value='latebreakingplay30' >VIP Late Info Play (L30 Days)</option>
    <option value='latebreakingplay365' >VIP Late Info Play (L365 Days)</option>
    <option value='vipplays30' >VIP Plays (L30 Days)</option>
    <option value='vipplays365' >VIP Plays (L365 Days)</option>
    <option value='yesterday' selected="">Yesterday</option>
    <!--<option value='thisweek' >This Week</option>-->
    <option value='past7days' >Past 7 Days</option>
    <!--<option value='thismonth' >This Month</option>-->
    <option value='past30days' >Past 30 Days</option>
    <!-- <option value='thisyear' >This Year</option> -->
    <option value='current' >Current Season</option>
    <option value='past365days' >Past 365 Days</option>
    </select>
    </form>
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/pushedPick.gif" />  Push</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div>
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/losingPick.gif" />  Loss</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div>
<div style="width: 48px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/winningPick.gif" />  Win</div>
<table class='inner_result detailed_history'> 
<tr class="hdr_2">
<td>Game Date</td>
<td colspan="2">Game/Pick Details</td>
<td>Result</td>
<td>Unit Change</td>
</tr>
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
</table>
   <?php
        } else {

            ?>
        <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
        <h2 class="post-title">Detailed History</h2>
        <div class="pmpro_content_message">You must be logged in to view this section.  Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
        <?php

        }

    } else  if($data_type=="pending"){
      if (pmpro_hasMembershipLevel() ) {
   ?>
<script type='text/javascript'>
jQuery(document).ready(function(){
    memberresults("pending","<?php echo $sport;?>","");
});
</script>
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1>
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
   <?php 
      }
        } else  if($data_type=="unauthorized"){
            if (pmpro_hasMembershipLevel() ) {
        ?>
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1>
<div class="members-only">
Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br> Your current membership level is not authorized to view this section.</strong><br> <a href="<?=home_url();?>/subscription-options/">Click Here</a> to upgrade your membership and view today's <?php echo $sport_val; ?> picks.</p></div>
        <?php
        }
      }

        else if($data_type=="defaultMessage"){
            if (pmpro_hasMembershipLevel() ) {
        ?>
        <!--INTENTIONALLY LEFT BLANK SO WHEN A MEMBER LOGS IN THE MESSAGE BELOW DISAPPEARS-->
        <?php

        } else {

        ?>
<div class="loggedout-members-only">
<p>Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br>
<a href="http://wsplays-members.com/login/">Log In</a> &nbsp;-<strong>or</strong>-&nbsp; <a href="http://wsplays-members.com/subscription-options/">View/Purchase Subscriptions Here</a>.</p>
<p><a href="http://wsplays-members.com/membership-account/membership-checkout/?level=23">Click Here</a> to register for <strong>FREE PICKS</strong> and gain <strong>FREE ACCESS</strong><br> to our Pick History &amp; Detailed Records </p>
</div>
        <?php
        }
      }
   }
}
?>
Javascript文件

var memberresults =
        function memberresults(seasontype, sport, seasonrange) {
            "use strict";
            var ajaxl = '<img src="/wp-content/plugins/bid-sys/customgif/ajax-loader.gif" alt="" />',
                dataURL = "seasontype=" + seasontype + "&sport=" + sport + "&seasonrange=" + seasonrange;
            jQuery("#member_" + seasontype + "season_vals_inner").html(ajaxl);
            jQuery.ajax({
                type: "POST",
                url: "/wp-content/plugins/bid-sys/ajax_member.php",
                data: dataURL,
                success: function (msg) {  // alert(msg);
                    jQuery("#member_" + seasontype + "season_vals_inner").html(msg);
                }
            });
        };

问题是,插件创建了表id的成员\u currentseason\u vals\u inner、成员\u PastsSeason\u vals\u inner等。呈现每个表中的6个表示6个重复id,而id应该是唯一的!ajax将其结果放入它找到的第一个具有该id的表中,因此所有结果都将进入“NFL Football”表

您看到的随机性是因为对于每项运动,memberresults都是通过ajax单独获取的,这是异步的,即内容在到达浏览器时呈现。任何结果都可能是最后一个,这就是你将在NFL表格中看到的

这可以通过一个包装器来修复,该包装器充当js/jquery查找正确表的上下文,但最好修复唯一id。由于我认为您不希望每项运动都显示一次以上,因此我建议将php$sport编号附加到表id中,并调整js以使用它。js memberresults已将此数字作为其第二个参数接收

在php memberresults函数中,更改以下行4次:

<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'>
致:


对谢谢你抽出时间!这就成功了。从中我们学到了很多。再次非常感谢:
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'>
<table id='member_<?=$data_type;?>season_vals_inner<?=$sport;?>' class='hdr_3 inner_result'>
jQuery("#member_" + seasontype + "season_vals_inner").html ...
jQuery("#member_" + seasontype + "season_vals_inner" + sport).html ...