在Wordpress中通过AJAX将表单变量传递给$ _SESSION

时间:2014-04-18 21:42:57

标签: javascript php jquery ajax wordpress

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

FORM:

<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;
}

功能: function addExercise(){   全球$ post;

echo $ 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 - &gt; session Var但是这段代码是从我原来的$ _POST Submit按钮拼凑而成的。事情的AJAX让我感到困惑,并以Wordpress处理事物的不同方式投入混合,任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

在WordPress中使用$ _SESSION与标准的PHP脚本方法不同。你必须做一些事情,比如在WordPress加载的顺序中进行分解,会话是否设置,创建等等。

你见过WP Session Manager吗?它使得在WordPress中使用会话更加轻松。查看https://wordpress.org/plugins/wp-session-manager/