【问题标题】:Pass form Variables to $_SESSION by AJAX in wordpress在 wordpress 中通过 AJAX 将表单变量传递给 $_SESSION
【发布时间】:2014-04-18 21:42:57
【问题描述】:

我的网站上有几个表单可以处理 $_SESSION 中保存的数据。我期待 AJAXify 所有这些。主要示例如下。

表格:

<form class="form-inline" id="addExerciseForm" role="form" method="post" action=" ">
        <div class="form-group">
            <input class="hidden" name="ExerciseID" type="text" class="form-control" value="29">
        </div>
        <div class="form-group lightboxFormText">
            <label class="lightboxFromElementLabels" for="exerciseDescription">Description</label>
            <textarea class="form-control" name="Description" rows="3"><?php echo the_content(); ?></textarea>
        </div>
        <br />
        <br />
        <div class="form-group lightboxFormElements">
            <label class="lightboxFromElementLabels" for="exerciseSets">Sets</label>
            <input type="text" name="Sets" class="form-control" placeholder="Sets">
        </div>

        <div class="form-group lightboxFormElements">
            <label class="lightboxFromElementLabels" for="exerciseReps">Reps</label>
            <input type="text" name="Reps" class="form-control" placeholder="Reps">
        </div>
        <div class="form-group lightboxFormElements">
            <label class="lightboxFromElementLabels" for="exerciseReps">Load</label>
            <input type="text" name="Load" class="form-control" placeholder="Load">
        </div>
        <div class="form-group lightboxFormElements">
            <label class="lightboxFromElementLabels" for="exerciseReps">Rest</label>
            <input type="text" name="Rest" class="form-control" placeholder="Rest">
        </div>
        <div class="form-group lightboxFormElements">
            <label class="lightboxFromElementLabels" for="exerciseReps">Tempo</label>
            <input type="text" name="Tempo" class="form-control" placeholder="Tempo">
        </div>
        <br />
        <br />
        <div class="modal-footer">
        <div class="form-group">
            <input type="hidden" name="action" value="addExercise">
          <input type="submit" class="btn btn-success">Add to Collection</input>
        </div>
    </div>
        </form>

Javascript:

 jQuery('#addExerciseForm').submit(addExercise);

function addExercise(){

var newExercise = jQuery(this).serialize();

jQuery.ajax({
type:"POST",
url: "/wp-admin/admin-ajax.php",
data: addExerciseForm,
success:function(data){
jQuery("#feedback").html(data);
}
});

return false;
}

功能: 函数添加练习(){ 全球 $post;

回声 $description;

$_SESSION['collection'][$_POST['ExerciseID']] = array(
$description => $_POST['Description'],
$sets => $_POST['Sets'],
$reps => $_POST['Reps'],
$load => $_POST['Load'],
$rest => $_POST['Rest'],
$tempo => $_POST['Tempo']);

$description = $_SESSION['collection'][$exid]['Description']; 
$sets = $_SESSION['collection'][$exid]['Sets'];
$reps = $_SESSION['collection'][$exid]['Reps'];
$rest = $_SESSION['collection'][$exid]['Rest'];
$load = $_SESSION['collection'][$exid]['Load'];
$tempo = $_SESSION['collection'][$exid]['Tempo'];

die();
}
add_action('wp_ajax_addExercise', 'addExercise');
add_action('wp_ajax_nopriv_addExercise', 'addExercise');

我知道我可以直接从 jQuery VAR -> session Var 但是这个代码是从我原来的 $_POST 提交按钮拼凑而成的。事情的 AJAX 方面让我感到困惑,并且混合了 Wordpress 处理事情的不同方式,任何帮助将不胜感激。

【问题讨论】:

    标签: javascript php jquery ajax wordpress


    【解决方案1】:

    在 WordPress 中使用 $_SESSION 与标准 php 脚本方法不同。你必须做一些事情,比如在 WordPress 加载的顺序中考虑什么时候,会话是否被设置、创建等等。

    你见过 WP 会话管理器吗?它使在 WordPress 中的会话工作更加轻松。查看https://wordpress.org/plugins/wp-session-manager/

    【讨论】:

    • 我尝试使用 WP_Session 但我发现它不起作用,即使在这个论坛上有一个广泛的问题,我也无法让它创建我的数组并在 $_POST 上正确填充它。
    • 我已经重新实现了 wp_session,并且每次运行 $_POST 时都会遇到与 here 相同的问题,它会覆盖数组中的项目。
    • 我想知道 $_POST 上的会话 ID 是否不同,因为它实际上不是您自己的会话? IE,这是服务器正在制作的。抱歉,我帮不上忙!
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 2015-04-28
    • 1970-01-01
    • 2016-01-11
    • 2013-09-10
    • 1970-01-01
    • 2015-12-02
    • 2014-02-02
    相关资源
    最近更新 更多