1

我正在涉足 JQuery,并且遇到了一个我还不太清楚的问题。这是上下文:

我有一个 HTML 表单,使用 MySQL 和 PHP,用于编辑 CMS 帖子。这篇文章将有一个附件列表(例如画廊的图像或可下载的文件)。使用 JQuery,用户可以单击这些列表项元素并在显示的 div 中编辑每个附件的详细信息(例如,删除图像、添加标题等)。

目前,当用户选择删除附件时,我只是淡化其不透明度并向用户提供一个新选项来“撤消”删除。提交完整的父表单(CMS 帖子)后,我想收集所有仍标记为删除的附件,并将它们的 GUID 提交给 PHP 脚本,该脚本正在为我完成所有其余的帖子更新。

选项 A:

是否可以将 JQuery 数组与通过表单输入自然发送到操作脚本的数据一起提交到 PHP 脚本?

选项 B:

是否可以使用 JQuery 动态填充/清空(隐藏)表单输入数组,然后可以自然地将其与其他所有内容一起提交给动作脚本?

我目前正处于使用必要的 GUID 填充 Javascript 数组的阶段,但现在不知道如何处理它。

//populate deleted attachments array
$(document).ready(function() {
  $('#post-editor').submit(function() {
    var arrDeleted = [];    
    $('.deleted-att').each(function(){
      arrDeleted.push({guid: $(this).attr("data-guid")});
    });
    //do something with array
  });
});
4

4 回答 4

2

JSON.stringify并将arrDeleted它们放在表单中的隐藏字段中,该字段将被提交。

$('#post-editor').submit(function() {
    var arrDeleted = [];    
    $('.deleted-att').each(function(){
        arrDeleted.push({guid: $(this).attr("data-guid")});
    });
    $('#post-hidden').val(JSON.stringify(arrDeleted));
});

在您的 html 中的某处:

<form id="post-editor">
    <input type="hidden" id="post-hidden" name="post-hidden" />
    <!-- ... other fields ... -->
 </form>

然后json_decode($_POST['post-hidden'])在服务器上获取阵列。

于 2013-01-16T13:41:06.837 回答
1

在您的表单中创建一个隐藏字段..arrDeleted通过jquery将值放入您的输入中并发布表单..json_decode()使用获取发布的值...

<input  type="hidden" id="hidden"/>

查询

$(document).ready(function() {
   $('#post-editor').submit(function() {
   var arrDeleted = [];    
   $('.deleted-att').each(function(){
    arrDeleted.push({guid: $(this).attr("data-guid")});
  });
   $('#hidden').val(JSON.stringify(arrDeleted));
 });
});
于 2013-01-16T13:43:11.990 回答
1

最简单的做法是将隐藏的输入字段添加到 HTML 表单

然后在jQuery中做这样的事情

$('form').submit(function() {
    $('#hidden_id_field').val( arrDeleted.join(',') );
});

在这种情况下, arrDeleted 是您已经设置的阵列。它会发送一个逗号分隔的列表,然后在您的 PHP 中拆分这些值并按照您的意愿行事。

通常我只是做 AJAX 并将 JSON 发送到我的应用程序。但是,如果您真的想那样做,上述方法将起作用。它的优点是在您提交表单之前不会实际删除服务器上的任何内容。

于 2013-01-16T13:45:07.150 回答
0

您可能希望通过传统的表单提交和刷新来执行此操作,但如果您愿意异步提交请求,则可以使用 jQuery 提交表单并序列化已删除项目的数组:

var form = $('#post-editor');
form.submit(function() {
  var arrDeleted = [];    
  $('.deleted-att').each(function(){
    arrDeleted.push({ // The format $.serializeArray produces.
      name: "deleted",
      value: $(this).attr("data-guid")
    });
  });

  var formData = form.serializeArray();
  // Add values to existing form data
  formData = formData.concat(arrDeleted);

  $.ajax({
    url: form.attr('action'),
    data: formData
    // Other ajax options
  });
});

在 PHP 端,引用$_REQUEST['deleted']将返回一个 GUID 数组。

于 2013-01-16T13:58:23.287 回答