我正在尝试将隐藏变量发送到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;
});
答案 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的都是name
和value
属性:
$val = $_GET['test'] // refers to `name` attribute. gets `value` attribute