weixin_33722405 2018-01-25 13:20 采纳率: 0%
浏览 31

在我的脚本中需要帮助

I have a lot of problems with my script. I'm using the outlook API, I'm having trouble but everything works. I'm trying to retrieve the mail and store it in a database. When I post a single mail no problem, but when I post several messages nothing goes wrong. I'll explain: my PHP file that displays my view

{{#each messages}}
         
        <h3 id="msg-from" class="list-group-item-heading from_1">{{this.from.emailAddress.name}}</h3><button type="submit"  class="btn btn-primary col-2" onclick="btn_urgent()" >urgent</button>
        <h4 id="msg-subject" class="test list-group-item-heading subject_1">{{this.subject}}</h4>
            
        <p id="msg-received" class="list-group-item-heading text-muted received_1"><em>Received: {{formatDate this.receivedDateTime}}</em></p>

        <div id="post1" class="azerty">
            <p id="msg-bodyPreview" class="list-group-item-text text-muted azerty bodypreview_1"><em>{{this.bodyPreview}}</em></p>
            <div class="demasquer">
                    <p id="msg-uniqueBody" class="body_1"><em>{{{this.uniqueBody.content}}}</em></p>;
            </div>
        </div> 
 
          }
  }  
        
    {{/each}}

I use Handlebars.

I manage to get the value of each field, for each mail in this way:

 window.onload = function(){
      
      console.log("********************TEST_INSERT*********************");
   
   
      for($i = 0; $i <= 1; $i++){
          console.log("after for");
          console.log($i);
   $input = document.getElementsByClassName('from_1')[$i].textContent;
   $sub = document.getElementsByClassName('subject_1')[$i].textContent;
   $recei = document.getElementsByClassName('received_1')[$i].textContent;
   $preview = document.getElementsByClassName('bodypreview_1')[$i].textContent;
   $body_1 = document.getElementsByClassName('body_1')[$i].textContent;
    console.log("*********************");
    console.log($input);
    console.log($sub);
    console.log($recei);
    console.log($preview);
    console.log($body_1);
    console.log("*********************");
    
    
}};                   

I then go through an Ajax that is called by my onclick (in my view).

function btn_urgent(){
    console.log("*************************");
    console.log("btn_urgent");
    console.log($input);
    console.log("*************************");
    $.ajax({url: '../../wp-content/plugins/game_plugin/process_general.php',
        
    type: 'POST',
    
    data: {info: 'insert_to_db', input: $input, sub: $sub, recei: $recei, preview: $preview},
    
    success: function() {
        console.log("*************************");
            console.log("ssrtsgsgsg");
            
             
             
            console.log("*************************");
            
            
             
        }

My AJAX request calls a function in another php file (process related)

$info = $_POST['info'];
$input= $_POST['input'];
$recei= $_POST['recei'];
$sub= $_POST['sub'][$i];
$preview= $_POST['preview'];

// Then call the function
insert_to_db($input, $sub, $recei, $preview);

 function insert_to_db($input, $sub, $recei, $preview){
     
global $wpdb;

         $wpdb->insert(
                    'test_insert', //table name
                    array(
                'id' => '',
                'from_mail' => $input,
                'subject'  =>$sub,
                'recei' => $recei,
                'preview' =>$preview,
                
                    ), //columns
                    array(
                '%d',
                '%s',
                '%s',
                '%s',
                '%s',
                    )
            );

     
  }

This is how my script works. the trick is that I can't find a solution to insert several emails in my database. My button doesn't know what mail it's attached to. I'm going around in circles I tried to create a loop that gets bigger but I don't know what to add... If someone has a solution/advice, I will take the following steps Thanks to all of you...

</div>
  • 写回答

1条回答 默认 最新

  • csdn产品小助手 2018-01-25 14:29
    关注

    First you may modify the ID of the div-s to unique, because the HTML dont like the ID duplications. Forgot the id variable. Put a div tag into the PHP each loop like this:

    {{#each messages}}
    <div class="emailBody">
        <h3 id="msg-from" class="list-group-item-heading from_1">{{this.from.emailAddress.name}}</h3>
    <button type="submit"  class="btn btn-primary col-2" onclick="btn_urgent(this)" >urgent</button>
        <h4 id="msg-subject" class="test list-group-item-heading subject_1">{{this.subject}}</h4>
    
        <p id="msg-received" class="list-group-item-heading text-muted received_1"><em>Received: {{formatDate this.receivedDateTime}}</em></p>
    
        <div id="post1" class="azerty">
            <p id="msg-bodyPreview" class="list-group-item-text text-muted azerty bodypreview_1"><em>{{this.bodyPreview}}</em></p>
            <div class="demasquer">
                    <p id="msg-uniqueBody" class="body_1"><em>{{{this.uniqueBody.content}}}</em></p>;
            </div>
        </div> 
    </div> 
    
          }}  
    {{/each}}
    

    Div tag on the begin and end of the loop, and add "this" to the button onclick event.Then you change the function btn_urgent() like this:

    function btn_urgent(item){
    var $thisInput = $(item).closest(".emailBody").find(".from_1")[0].innerHTML;
    var $thisSub = $(item).closest(".emailBody").find(".subject_1")[0].innerHTML;
    var $thisRecei = $(item).closest(".emailBody").find(".received_1 em")[0].innerHTML;
    var $thisPreview = $(item).closest(".emailBody").find(".bodypreview_1 em")[0].innerHTML;
    var $body_1 = $(item).closest(".emailBody").find(".body_1 em")[0].innerHTML;
    $.ajax({url: '../../wp-content/plugins/game_plugin/process_general.php',
        type: 'POST',
        data: {info: 'insert_to_db', input: $thisInput, sub: $thisSub, recei: $thisRecei, preview: $thisPreview},
        success: function() {
            console.log("OK");
        }
    });
    

    }

    Like this the button get himself, move up the the emailBody div tag and search for the needed element as ".from_1" or ".body_1 em". You need to add it in the correct way, of the "[0]" part will fail. You may add the select in a different value and if the length of that object is more than 0, than use "var ...[0].innerHTML".

    If you need multiply sending, create a global button, create a function which select the ".emailBody" within an array, go through on this array with an each loop and add the properties to values as you see it below "function btn_urgent(item)".

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。