0

我正在尝试将隐藏变量发送到 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;
     });
4

2 回答 2

3

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

var saccess=$('#selaccess').find(":selected").attr('key');
$(this).append('<input/>')
       .attr('type','hidden')
       .attr('name', 'selaccess')
       .attr('value', saccess);
于 2013-03-29T09:28:16.197 回答
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
于 2013-03-29T09:28:38.460 回答