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

如何从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?

PHP新手在这里。 我想在PHP / MySQL中保存一个变量(来自jQuery),但是这个变量在表单之外。 表单中的表单元素的值虽然保存得很好。 在这种情况下,变量名称是'mode',我希望'mode'被发送到PHP。 p>

这是代码: p>

HTML form; p>

 &lt; form action =“submit.php”method =“post”id =“myform”&gt; 
&lt; textarea id =“source1”name =  “source1”&gt;&lt; / textarea&gt; 
&lt; textarea id =“source2”name =“source2”&gt;&lt; / textarea&gt; 
&lt; input type =“image”src =“images / save.png”  name =“submit”id =“submit”title =“Save”class =“save-button”/&gt;  
&lt; / form&gt; 
  code>  pre> 
 
 

jQuery / AJAX: p>

  mode = 1;  //需要存储/保存此值
 
 // AJAX格式save 
 $(“form#myform”)。submit(function(){
 $ .post(
'submit.php',  \ N $(本).serialize(),
function(数据){
 .... \ N} 
)的; 
 代码>  PRE> 
 
 

PHP:

  $ submit_time = date('Y / m / d H:i:s'); 
 $ content1 = $ _POST ['source1']; 
 $ content2 =  $ _POST ['source2']; 
 $ mode = $ _POST ['mode']; //需要存储/保存此值
  code>  pre> 
 
 

是 在表单中创建隐藏表单字段的解决方案? p> div>

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