javascript - 使用 php、ajax 和 javascript 循环仅执行最后一个数组元素

标签 javascript php jquery arrays ajax

嗨, friend 们,我正在尝试保存循环中的数据,这是我的代码。

<html>
 <head>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
 </head>
<body onload="searchVideo();">
<?php
    ini_set('max_execution_time', 300);
    $query = "SELECT * FROM `playlists`";
    $result = mysqli_query($mysql,$query);
    while($row=mysqli_fetch_assoc($result)){
          $id=$row['id'];
          $playlists=$row['playlists'];
          $myArray = explode(',', $playlists);
              $length =  sizeof( $myArray);
              $myArray[0]=PLrEnWoR732-BHrPp_Pm8_VleD68f9s14-
              $myArray[1]=PLFgquLnL59ak1QNHmrUSjNM6WTegpgX__
              for ($i=0; $i<$length; $i++){
               echo "
                  <script>
                    var pageToken = '';
                    var numOfResult = 0;
                    var maxResults = 200;
                    function searchVideo(){
                    var separator = ',';
                    $.getJSON('https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&pageToken=' + pageToken + '&playlistId=$myArray[$i]&key=APIKEY&callback=?',function(data){
                    var l = data.items.length;
                    pageToken = data.nextPageToken;
                    numOfResult += l;
                    var itemUrl = '';
                    var videoids = [];
                    for(var i = 0; i < l; i++) {
                    if( i == 0) {
                        separator = ',';
                       }
                   else {
                       separator = ',';
                   }
                   var videoid = data.items[i].snippet.resourceId.videoId;
                   var title = data.items[i].snippet.title;

                   $.ajax({
                     method: 'POST',
                     url:    'add.php',
                    data: { title: title, videoid: videoid }
                   })
                  .done(function(data) {

                 });
              }

            if( numOfResult <= maxResults) {
               searchVideo();

            }
    });

}

    </script>
    ";
              }

    }



?>

添加.php

<?php
 $title = mysqli_real_escape_string($mysql,$_POST['title']);
 $videoid = mysqli_real_escape_string($mysql,$_POST['videoid']);
 $thumbnail_url = 'http://img.youtube.com/vi/'.$videoid.'/hqdefault.jpg';

  $sql = "INSERT INTO ytfb(name,video_name,thumbnail_url)     VALUES('$title','$videoid','$thumbnail_url')";
    $create_post_query=mysqli_query($mysql,$sql);
        if(!$create_post_query)
      {
        die("Connection failed".mysqli_error($mysql));
       }
 ?>

当我尝试在add.php中使用ajax保存数据时,仅保存最后一个数组元素中的元素,第一个数组元素中的元素未保存,我怎样才能保存所有数组元素中的数据。谁能帮我解决这个问题

最佳答案

在循环之外定义函数searchVideo,并组织使用不同的参数来调用它。在循环中更改全局变量或 searchVideo 的输入参数。 现在你得到这个结果是因为finaly执行了这个函数的最后一个实例。

关于javascript - 使用 php、ajax 和 javascript 循环仅执行最后一个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47880977/

相关文章:

javascript - jquery 获取单选按钮值

php - Jquery表单验证: Display all errors in a specific section of the webpage

jQuery SlideToggle,显示/隐藏速度

javascript - 在 Angular 中按数字排序

JavaScript - 如何为 Socket.io 事件创建自定义 API 监听器?

javascript - 如何使用 css 过滤器将图像上传到服务器

php - 在php中从数组中获取结果

JavaScript Moodle

javascript - 输入 {a :1} giving 1, 和 {a :1, b :2} giving an error in a Javascript console? 的行为是什么

javascript - 如何在 TD 中居中跨度?