隐藏变量未发送到php文件

时间:2013-03-29 09:25:08

标签: jquery variables hidden

我正在尝试将隐藏变量发送到php文件。由于这个原因,php没有收到这些变量。以下是旨在发送这些变量的代码。为什么它不起作用的任何想法? 谢谢你的帮助。

   ////// For the form of training data
  // bind 'myForm1' and provide a simple callback function
       $('.myForm1').ajaxForm(options);

  // attach handler to form's submit event
       $('.myForm1').submit(function() {       // .myForm1 is a class so applies to all forms of this page

  // passing PK/FK as hidden value to php (drop down menu displays values, here I get the PK-PF via key and send them to php for upload)
  var sown=$('#selpersonO').find(":selected").attr('key');  // finds the value of key of the selected choice in the drop down menu. Key is sent back by the php code that send info to drop down menu
             //console.log(tmp);
             //console.log(this);
            $(this).append('<input/>').attr('type','hidden').attr('selpersonO',sown);  // makes key value as hidden and passed to the php form that uploads data
            //console.log( $('.myForm')) ;
  var saccess=$('#selaccess').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selaccess',saccess);
  var scountry=$('#selcountry').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selcountry',scountry);
  var sprod=$('#selpersonP').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selpersonP',sprod);

  // submit $the form
     $(this).ajaxSubmit();
  // return false to prevent normal browser submit and page navigation
     return false;
     });

2 个答案:

答案 0 :(得分:3)

您没有为输入指定name属性,因此它们不会添加到请求参数集中。尝试按以下方式添加隐藏参数:

var saccess=$('#selaccess').find(":selected").attr('key');
$(this).append('<input/>')
       .attr('type','hidden')
       .attr('name', 'selaccess')
       .attr('value', saccess);

答案 1 :(得分:1)

在您的代码中:

$(this).append('<input/>').attr('type','hidden').attr('selpersonO',sown);

.attr()元素(或任何form引用)设置$(this),而不是input元素; .append()返回您追加的元素,而不是新创建和追加的元素。

使用此表示法创建节点并设置其属性:

$(this).append(
    $('<input>', {
         type : 'hidden',
         selpersonO : sown,
         name : 'required', // YOU NEED TO SET NAME AND VALUE
         value : 'required' // FOR PHP TO RETRIEVE THEM
    })
);

设置value属性,而不是使用自定义命名属性。 如果您确实需要使用自定义属性,但必须使用data-作为前缀。 然后你可以使用jQuery的.data();

访问它们
<input type="hidden" id="test" name="test" value="3" data-key="44" />

通过jQuery处理:

var key = $('#test').data('key') // Get value of data-key
var key = $('#test').attr('data-key') // DON'T DO THIS. Will work, but use data()
$('#test').data('key', 'test') // Set value
var value = $('#test').val() // Gets the `value` attribute

所有发送给PHP的都是namevalue属性:

$val = $_GET['test'] // refers to `name` attribute. gets `value` attribute