我有一个PHP文件将数据发送到外部jQuery,这是一个dropzone,其中上传了多个图像(每个图像内部都有不同的信息)。我建立了一个foreach PHP循环,该循环生成数组(foreach图像),并且每个数组都应在该jQuery中执行相同的功能(删除,更新等)。
如何发送和处理从PHP到jQuery的循环?
我正在尝试使用.each方法,但是我想我错了,因为生成的循环显示针对数组数量重复的相同图像(具有相同信息)!
我的PHP
<?php
$args = array(
'order' => 'ASC',
'orderby' => 'post_date',
'post_type' => 'attachment',
'author' => $current_user->ID,
'meta_key' => 'is_portfolio',
'meta_value' => '1',
'numberposts' => -1,
);
$attachments = get_posts($args);
if ($attachments)
{
foreach ($attachments as $attachment)
{
$url = $attachment->guid;
$imggg = $attachment->post_mime_type;
$url = wp_get_attachment_url($attachment->ID);
$thumb = wp_get_attachment_image_src($attachment->ID, 'thumbportfolio');
?>
//here is my jQuery array generated for X number of attachments uploaded
var mockFile = {
name: "<?php echo $attachment->post_title ?>",
size: 12345,
serverId: '<?php echo $attachment->ID ?>',
post_title : "<?php echo $attachment->post_title ?>",
post_desc : "<?php echo $attachment->post_content ?>",
thumb : "<?php echo $thumb[0] ?>"
};
<?php
}
} ?>
我的jQuery where .each
of mockFile
(应该使用相关信息和其他内容启动Dropzone Thumb)。
$.each( mockFile, function( index, value ){
//variables accessing array keys
var mockThumb = mockFile['thumb'];
var mockID = mockFile['serverId'];
var mockTitle = mockFile['post_title'];
var mockDesc = mockFile['post_desc'];
//initiate dropzone
myDropzone.options.addedfile.call(myDropzone, mockFile);
myDropzone.options.thumbnail.call(myDropzone, mockFile, mockThumb );
//Other stuff
jQuery( "#itemtitle" ).prop( "id","itemtitle-"+mockID);
jQuery( "#itemtitle-"+mockID ).prop( "value", mockTitle);
jQuery( "#itemdescription" ).prop( "id","itemdescription-"+mockID );
jQuery( "#itemdescription-"+mockID ).prop( "value", mockDesc );
jQuery( "#updateinformations" ).prop( "id","updateinformations-"+mockID );
change_ids(mockID);
console.log(mockFile);
});
结果呢?重复相同的图像。
你能帮助我吗?
感谢ADyson的宝贵帮助,我将尝试他的解决方案。实际上,我稍后会在搜索和研究jQuery文档时解决问题。假设我有2个相互交互的文件:
第一个可以通过一个对象发送多个具有相同名称的变量(这基本上是我的问题)。所以,我宣布一个array
循环之前,并使用.push
每个$attachment
像(main.php)那个地方来存储一切:
var myarray = [];
<?php
$args = array(
'order' => 'ASC',
'orderby' => 'post_date',
'post_type' => 'attachment',
'author' => $current_user->ID,
'meta_key' => 'is_portfolio',
'meta_value' => '1',
'numberposts' => -1,
);
$attachments = get_posts($args);
if ($attachments)
{
foreach ($attachments as $attachment)
{
$url = $attachment->guid;
$imggg = $attachment->post_mime_type;
$url = wp_get_attachment_url($attachment->ID);
$thumb = wp_get_attachment_image_src($attachment->ID, 'thumbportfolio');
?>
var mockFile = {
name: "<?php echo $attachment->post_title ?>",
size: 12345,
serverId: '<?php echo $attachment->ID ?>',
post_title : "<?php echo $attachment->post_title ?>",
post_desc : "<?php echo $attachment->post_content ?>",
thumb : "<?php echo $thumb[0] ?>"
};
myarray.push(mockFile);
<?php
}
} ?>
Console.log(myrray)显示多维数组,例如
[{attachment1},{attachment2},{attachment3}]
所以我创建了我的.each
jQuery函数,例如(myscript.js)
$.each( myarray, function( i, el ){
//blablabla accessing keys and values.
});
再一次,我不知道这是否是实现它的最佳方法,但是效果很好,我的页面加载速度也比以前快。也许我应该学习有关交换信息的更多有关json的知识,但现在我为自己感到骄傲。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句