循环仅使用php、ajax和javascript执行最后一个数组元素
嗨,朋友们,我正试图从循环中保存数据,这是我的代码循环仅使用php、ajax和javascript执行最后一个数组元素,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,嗨,朋友们,我正试图从循环中保存数据,这是我的代码 <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',
<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>
";
}
}
?>
for(变量i=0;i
这里我将是最后一个元素的索引,所以只存储最后一个项目。
您必须在循环中循环ajax调用以保存所有元素。在循环外定义函数searchVideo,并组织使用不同的参数调用它。在循环中更改全局变量或searchVideo的输入参数。
现在得到这个结果是因为最终执行了这个函数的最后一个距离。这些行看起来很奇怪。$myArray[0]=PLrEnWoR732-BHrPp_Pm8_VleD68f9s14-
。这是假设为字符串吗?在它的当前格式中,应该会引发错误。您正在添加n*m
乘以相同的脚本元素,其中n
是播放列表
表中的行数,m
列中的播放列表数播放列表
of每行O。o@Andreas我不太明白,你能告诉我错误在哪里吗there@Andreas我只需要更改每个循环的播放列表,因此我给出了$myArray[$I]通过数组的哪些循环你正在重新定义相同的函数,每次都使用不同的函数体。我认为这不会正常工作。既然ajax调用在循环中,我如何通过循环进行ajax调用
<?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));
}
?>
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;