【发布时间】:2012-03-21 12:27:24
【问题描述】:
我目前正在编辑一个 WordPress 插件,它允许您按类别过滤帖子,一旦选择了一个类别,该类别的帖子就会显示为小部件上的清单,用户可以选择他们希望显示的帖子在主题的侧边栏/小部件区域中。
我已经将小部件带到了用户可以选择他们的帖子的程度,小部件允许选择单个帖子,但是如果选择了多个帖子并按下了保存按钮,则表单仅返回最后选择的发帖。
经过一番搜索,我发现问题出在表单返回上。 它要么与更新有关,要么与 AJAX 处理变量的多个实例的方式有关。
发布到服务器的信息如下:
action save-widget
add_new
id_base single_post_super_widget
multi_number
savewidgets 9bc3d79f1c
sidebar lcp-sb
widget-height 200
widget-id single_post_super_widget-2
widget-single_post_super_widget[2][object_to_use] 5005
widget-single_post_super_widget[2][object_to_use] 4892
widget-single_post_super_widget[2][object_to_use] 4607
widget-single_post_super_widget[2][object_type] 72
widget-single_post_super_widget[2][paged] 1
widget-single_post_super_widget[2][tab] all
widget-single_post_super_widget[2][title_override]
widget-width 400
widget_number 2
object_to_use 是被选中的帖子。
发送的信息在这里定义:
var theArgs = {
action: jQuery('input.widget_class:hidden', widgetDiv).first().val() + '-get-metabox',
widget: widgetDivId,
number: widgetNumber,
blog_id: jQuery(widgetInputBase + 'blog_id').val(),
object_type: jQuery(widgetInputBase + 'object_type').val(),
tab: currentTab,
paged: currentPage,
object_to_use: jQuery('input[type=checkbox][name$="[object_to_use]['+currentTab+']"]:checked', widgetDiv).first().val(),
title_override: jQuery(widgetInputBase + 'title_override').val(),
excerpt_override: jQuery(widgetInputBase + 'excerpt_override').val(),
searched: ('search' == currentTab) ? jQuery('input.quick-search', widgetDiv).first().val() : ''
};
和 jQuery.post 操作:
jQuery.post(
ajaxurl,
theArgs,
function( r ) {
jQuery('.ajax-feedback').css('visibility', 'hidden');
if ( r && r.length > 2 ) {
jQuery('div.widget-content', widgetDiv).html(r);
}
}
);
关于这个问题,widget-single_post_super_widget[2][object_to_use] 被多次发布,AJAX 如何处理这个问题?每个帖子/变量是否必须是唯一的?
【问题讨论】:
-
在帖子中发送数组时,其名称应类似于“name[]”,例如
var postData={'ids[]':idArray}。检查此以获取更多详细信息http://stackoverflow.com/questions/299610/how-can-i-send-an-array-to-php-through-ajax -
@sakhunzai
object_to_use已重命名为包含方括号,现在似乎一切正常。谢谢