我有一个ajax函数,在发送之前,它会执行以下操作:
function prepareGalleries() {
if($('.galleryField').length) {
$('.galleryField').val('');
$('.galleryField').each(function() {
var images = '';
var galleryField = $(this).attr('name');
$('#' + galleryField + ' li').each(function() {
images += $('img', this).attr('data-src') + ';';
})
images = images.replace(/;+$/, "");
$(this).val(images);
})
}
}
function saveFields(form) {
prepareGalleries();
$.ajax({
type: "POST",
data: $("#" + form).serialize(),
success: function(data)
{
window.location.reload();
}
});
}
它查找隐藏的.galleryField输入,然后为每个输入获取匹配的galleryBox中的图像(id与galleryField的名称相同)。
然后获取每个图像data-src值并将其添加到字符串中,并将其放入galleryField输入中。
这样可以,但是在每次保存时它会复制自己 - 所以首先保存我可能有两个图像,然后再次保存(不添加更多图像)4,然后8等等 ...
在我的php中,我有类似的东西:
checkAction();
function checkAction()
{
if ( $_POST['action'] === 'save' ) {
saveAction();
}
}
function saveAction()
{
if ( $_POST['form'] === 'page' ) {
foreach ( $_POST as $item => $value ) {
if ( $item != 'currentPage' && $item != 'form' && $item != 'action')
{
save( 'pages', $GLOBALS['currentPage'], $item, $value );
}
}
} else {
foreach ( $_POST as $item => $value ) {
if ( $item != 'form' && $item != 'action' ) {
save( $_POST['form'], $item, $value );
}
}
}
}
function save()
{
if ( !$GLOBALS['loggedIn'] )
return;
$numArgs = func_num_args();
$args = func_get_args();
switch ( $numArgs ) {
case 2:
$GLOBALS['db'][$args[0]] = $args[1];
break;
case 3:
$GLOBALS['db'][$args[0]][$args[1]] = $args[2];
break;
case 4:
$GLOBALS['db'][$args[0]][$args[1]][$args[2]] = $args[3];
break;
}
file_put_contents( 'database.js', json_encode( $GLOBALS['db'], JSON_PRETTY_PRINT ) );
}
所以它似乎要附加到值或我的图像循环有点破碎。
我对这个问题感到宽松......已经摸不着头几个小时了。尝试过我能想到的一切。
上面的ajax和php适用于其他领域 - 只是不是这个画廊领域......这就是我觉得如此困惑。
任何建议都将不胜感激。