将JQuery数组和PHP表单数据一起提交到PHP脚本
我涉猎了JQuery,遇到了一个我还不太清楚的问题。以下是上下文: 我有一个HTML表单,使用MySQL和PHP,用于编辑CMS帖子。这篇文章会有一个附件列表(例如图库的图片或可下载的文件)。使用JQuery,用户可以单击这些列表项元素,并在显示的div中编辑每个附件的详细信息(例如删除图像、添加capton等) 当前,当用户选择删除附件时,我只是淡出其不透明度,并为用户提供一个新选项来“撤消”删除。在提交完整的父表单(CMS帖子)后,我想收集所有仍然标记为删除的附件,并将它们的GUID提交给PHP脚本,该脚本正在为我完成帖子更新的其余部分 备选方案A: 是否可以将JQuery数组与表单输入自然发送到动作脚本的数据一起提交到PHP脚本 备选案文B: 是否可以使用JQuery动态填充/清空(隐藏的)表单输入数组,然后将其与其他内容一起自然提交到动作脚本 我目前正处于用必要的guid填充Javascript数组的阶段,但现在不知道如何处理它将JQuery数组和PHP表单数据一起提交到PHP脚本,php,jquery,Php,Jquery,我涉猎了JQuery,遇到了一个我还不太清楚的问题。以下是上下文: 我有一个HTML表单,使用MySQL和PHP,用于编辑CMS帖子。这篇文章会有一个附件列表(例如图库的图片或可下载的文件)。使用JQuery,用户可以单击这些列表项元素,并在显示的div中编辑每个附件的详细信息(例如删除图像、添加capton等) 当前,当用户选择删除附件时,我只是淡出其不透明度,并为用户提供一个新选项来“撤消”删除。在提交完整的父表单(CMS帖子)后,我想收集所有仍然标记为删除的附件,并将它们的GUID提交给P
//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