将值传递给PHP

将值传递给PHP,php,ajax,jquery,Php,Ajax,Jquery,我需要将变量$option传递给php脚本。$option位于名为“option”的隐藏字段上 基本上,用户可以通过拖放等方式重新排列某些项目。这些项存储在一个数组中,一旦这些项被重新排列,数组就会被重新排序并保存 更改get\u选项($option)无法解决此问题到获取选项('myoption')我必须从隐藏字段中获取$option 我花了很多时间在网上搜索示例、解决方案和教程,但毫无希望,这对我来说太多了 array_walk($_POST['order'], 'st

我需要将变量
$option
传递给php脚本。
$option
位于名为“option”的隐藏字段上

基本上,用户可以通过拖放等方式重新排列某些项目。这些项存储在一个数组中,一旦这些项被重新排列,数组就会被重新排序并保存

更改
get\u选项($option)无法解决此问题
获取选项('myoption')
我必须从隐藏字段中获取
$option

我花了很多时间在网上搜索示例、解决方案和教程,但毫无希望,这对我来说太多了

            array_walk($_POST['order'], 'strip_text_menu_editor');
            $order_array = $_POST['order'];
            $current_menu = get_option($option);    
            $new_order = array();
            foreach($order_array as $order) {
                foreach($current_menu as $key => $value) {
                    if($order == $key) {
                        $new_order[] = $value;
                    }
                }
            }
            update_option($option, $new_order);
            echo '<script type="text/javascript" >
            jQuery(document).ready(function($) {
            var i = 0';
            echo "jQuery('#sortable li').each(function(){
                    var name = 'listItem_' + i;
                    i++;
                });
            });
            </script>";
            die(true);
HTML


从我看到的您发布的jQuery片段来看,您需要将“option”值添加到您发布的数据数组中

var data = {
    action: 'menu_editor_special_action',
    order: order,
    option: $('input[name=option]').val(),  //This part is new
};
jQuery.post(ajaxurl, data, function(response){
    jQuery('#response').html('Got this from the server: ' + response);
});

当然,我不知道您在“option”中存储了什么样的数据,也不知道get_option()等函数是如何处理的。这些函数是为了知道您需要如何发送这些数据以便服务器端代码理解,但这应该让您开始了。

从您发布的jQuery片段中可以看出,您需要在帖子中的数据数组中添加“option”值

var data = {
    action: 'menu_editor_special_action',
    order: order,
    option: $('input[name=option]').val(),  //This part is new
};
jQuery.post(ajaxurl, data, function(response){
    jQuery('#response').html('Got this from the server: ' + response);
});

当然,我不知道您在“option”中存储了什么样的数据,也不知道get_option()等函数是如何处理的。函数的作用是了解您需要如何发送这些数据以便服务器端代码理解,但这应该让您开始了。

永远不要在服务器端渲染JS代码块。从来没有,从来没有,几乎从来没有我在一个应用程序中使用服务器端变量填充head.js函数。源变量在会话中,因此传递它们是有意义的。但这更像是收集资源而不是“实用的可执行JS”。不知道你们俩在说什么:(@GregPettit
update\u option($option,$new\u order);
所以当重新加载页面时,我会做
$current\u menu=get\u option($option);
抱歉,我删除了您回复的上一条评论。您是否花时间检查您认为正在设置和正在获取的内容是否已被获取和设置?在jQuery中,您正在向PHP发送一个数据对象,其顺序为:order In it。同一个Ajax调用不应该发送新的“选项”吗?PHP似乎也没有试图从POST中获取一个新的“选项”。我想我仍然没有抓住大局。永远不要在服务器端呈现JS代码块。永远不要。永远不要。几乎永远不要。;-)我在一个应用程序中使用服务器端变量填充head.JS函数。源变量在会话中,因此传递它们是有意义的。但这更像是收集资源而不是“实用的可执行JS”。不知道你们俩在说什么:(@GregPettit
update\u option($option,$new\u order);
所以当重新加载页面时,我会做
$current\u menu=get\u option($option);
抱歉,我删除了您回复的上一条评论。您是否花时间检查您认为正在设置和正在获取的内容是否已被获取和设置?在jQuery中,您正在向PHP发送一个数据对象,其顺序为:order In it。同一个Ajax调用不应该发送新的“选项”吗?PHP似乎也没有试图从POST中获取新的“选项”。我想我仍然没有看到全局。因此,在PHP上从输入字段获取值时,我应该执行
$option=$\u POST['option'];
?在PHP上从输入字段获取值时,我应该执行
$option=$\u POST['option'];
??
function strip_text_menu_editor(&$value, $key) {
        $value = str_replace('listItem_', '', $value);
    }
var data = {
    action: 'menu_editor_special_action',
    order: order,
    option: $('input[name=option]').val(),  //This part is new
};
jQuery.post(ajaxurl, data, function(response){
    jQuery('#response').html('Got this from the server: ' + response);
});