如何从PHP / AJAX / jQuery中的表单外的JavaScript变量中保存数据?

PHP newbie here. I want to save a variable (from jQuery) in PHP/MySQL, but this variable is outside the form. The values from the form elements inside the form is being saved fine though. The variable name in this case is 'mode', and I want the 'mode' to be sent to PHP.

Here's code :

HTML form;

<form action="submit.php" method="post" id="myform">
 <textarea id="source1" name="source1"></textarea>
<textarea id="source2" name="source2"></textarea>
 <input type="image" src="images/save.png" name="submit" id="submit" title="Save"  class="save-button"/>    
</form>

jQuery / AJAX:

mode = 1;  // This value needs to be stored/saved

// AJAX form save
$("form#myform").submit( function () {    
$.post(
'submit.php',
$(this).serialize(),
function(data){
....
}
);

PHP:

$submit_time = date('Y/m/d H:i:s');
$content1 = $_POST['source1'];
$content2 = $_POST['source2'];
$mode = $_POST['mode'];  // This value needs to be stored/saved

Is the solution to create a hidden form field inside the form?

If the variable is not inside the form it doesn't get send to the server.

The solution is to put the variable into hidden field inside the form

Try:

// AJAX form save
$("form#myform").submit( function () {    
    $.post('submit.php', $.extend($(this).serializeArray(), { mode: mode }), function(data){
        ....
    });
});

jQuery's serialize() serializes the form into a querystring, so you really just have to add to that string :

mode = 1;

$("form#myform").submit( function (e) {    
    e.preventDefault();
    var data = $(this).serialize() + '&mode=' + mode;
    $.post('submit.php', data, function(data){

    });
});

or to submit the form with a hidden input:

$("form#myform").submit( function (e) {  
    e.preventDefault();
    $(this).append( $('<input />', {type:'hidden', name:'mode', value:mode}) );
    this.submit();
});