Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JQuery数组和PHP表单数据一起提交到PHP脚本_Php_Jquery - Fatal编程技术网

将JQuery数组和PHP表单数据一起提交到PHP脚本

将JQuery数组和PHP表单数据一起提交到PHP脚本,php,jquery,Php,Jquery,我涉猎了JQuery,遇到了一个我还不太清楚的问题。以下是上下文: 我有一个HTML表单,使用MySQL和PHP,用于编辑CMS帖子。这篇文章会有一个附件列表(例如图库的图片或可下载的文件)。使用JQuery,用户可以单击这些列表项元素,并在显示的div中编辑每个附件的详细信息(例如删除图像、添加capton等) 当前,当用户选择删除附件时,我只是淡出其不透明度,并为用户提供一个新选项来“撤消”删除。在提交完整的父表单(CMS帖子)后,我想收集所有仍然标记为删除的附件,并将它们的GUID提交给P

我涉猎了JQuery,遇到了一个我还不太清楚的问题。以下是上下文:

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

当前,当用户选择删除附件时,我只是淡出其不透明度,并为用户提供一个新选项来“撤消”删除。在提交完整的父表单(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
  });
});

JSON.stringify
删除
arr
,并将它们放在表单中的隐藏字段中,然后提交

$('#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>


然后在服务器上解码($\u POST['POST-hidden']),以获取数组。

json。将
删除的
字符串化,并将其放在表单中的隐藏字段中,然后提交

$('#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进行解码($\u POST['POST-hidden'])
以获取数组。

在表单中创建一个隐藏字段。通过jquery将
arrDeleted
值放入输入中 并发布表单。使用
json\u decode()
获取发布的值

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

在表单中创建一个隐藏字段。通过jquery在输入中输入
arrdelected
值 并发布表单。使用
json\u decode()
获取发布的值

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

最简单的方法是在HTML表单中添加一个隐藏的输入字段

然后在jQuery中执行如下操作

$('form').submit(function() {
    $('#hidden_id_field').val( arrDeleted.join(',') );
});
在本例中,删除的阵列是您已经设置的阵列。它会发送一个以逗号分隔的列表,然后在PHP中,您可以拆分这些值并根据需要执行操作


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

最简单的方法是在HTML表单中添加一个隐藏的输入字段

然后在jQuery中执行如下操作

$('form').submit(function() {
    $('#hidden_id_field').val( arrDeleted.join(',') );
});
在本例中,删除的阵列是您已经设置的阵列。它会发送一个以逗号分隔的列表,然后在PHP中,您可以拆分这些值并根据需要执行操作


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

您可能希望使用传统的表单提交和刷新来完成此操作,但如果您愿意异步提交请求,则可以使用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方面,引用
$\u REQUEST['deleted']
将返回一个GUID数组。

您可能希望使用传统的表单提交和刷新来完成此操作,但如果您愿意异步提交请求,则可以使用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方面,引用
$\u REQUEST['deleted']
将返回一个GUID数组。

您可以使用jQuery的一个Ajax函数从PHP脚本发送和接收数据。它并不复杂,jQuery提供了许多速记方法。您可以使用jQuery的一个Ajax函数从PHP脚本发送和接收数据。它并不复杂,jQuery提供了许多速记方法。这看起来很棒-它是作为一个数组提交,还是仅仅作为一个长字符串提交?编辑:Nevermind-刚刚试用过,它的完美:)是的,从技术上讲,它发送的字节中包含一个字符串,其中包含一个json编码的数组。:)这看起来很棒-它是作为一个数组提交,还是仅仅作为一个长字符串提交?编辑:Nevermind-刚刚试用过,它的完美:)是的,从技术上讲,它发送的字节中包含一个字符串,其中包含一个json编码的数组。:)谢谢bipen,因为两个答案基本相同,我会接受Emil的作为第一个:)谢谢bipen,因为两个答案基本相同,我会接受Emil的作为第一个:)尝试了这个,它返回
[arrDeleted]=>数组([0]=>[object object object],[object object object],[object object object])
…尝试了这个,它返回
[arrDeleted]=>数组([0]=>[object object]、[object object]、[object object])
…这对我来说很有趣-异步提交是我想去的地方,但目前还远远不够熟练,不足以让它变得可靠。至少在我能够拼写“asynchronous”之前,不必费劲思考:数据这对我来说很有趣-异步提交是我想去的地方,但是目前我还远远不够熟练,还不能保证它的可靠性。至少在我能够拼写“asynchronous”之前,我不需要仔细考虑它:D